Linux 如何根据子文件夹删除文件夹

Linux 如何根据子文件夹删除文件夹

我需要根据子文件夹的名称删除 Linux 上的一系列文件夹。

/tmp/23245/Default
/tmp/34534/Default
/tmp/45435/Default
/tmp/65464/Main

我想删除 /tmp 中包含 /Default 子文件夹的所有文件夹

这些文件夹

/tmp/23245/
/tmp/34534/
/tmp/45435/

我可以使用以下方法找到文件:find /tmp/*/Default

但是从该输出中,我如何获取文件夹 /tmp/Foldername 的名称以通过管道传输到 rm -rf

答案1

您可以使用 find 尝试以下操作:

find /tmp -mindepth 2 -maxdepth 2 -name "*Default*" -type d -printf "%h\n" | xargs rm -R

使用 mindepth 和 maxdepth 确保我们正在分析 /tmp 以下 2 级的目录,然后使用 %h 仅打印前导目录。将输出通过管道传输到 xargs rm -R 以删除前导目录。

答案2

dirnameGNU coreutils 中有:

for i in /tmp/*/Default; do
  rm -R "$(dirname "$i")";
done

也许还有一种find方法。我不太熟悉,所以我将这个留给你和/或其他人。

编辑:也许甚至rm -R "$(dirname /tmp/*/Default)"可以工作

答案3

您尝试过rm -d dirname*

rm -d /tmp/*/Default

刚刚离开这个网站:https://linuxize.com/post/rm-command-in-linux/

相关内容