我需要根据子文件夹的名称删除 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
dirname
GNU coreutils 中有:
for i in /tmp/*/Default; do
rm -R "$(dirname "$i")";
done
也许还有一种find
方法。我不太熟悉,所以我将这个留给你和/或其他人。
编辑:也许甚至rm -R "$(dirname /tmp/*/Default)"
可以工作