我需要根據子資料夾的名稱刪除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)"
可以工作