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/

相關內容