Find

如何根據find輸出刪除目錄?

  • August 17, 2021

我發出以下命令來查找 .svn 目錄:

find . -name ".svn"

這給了我以下結果:

./toto/.svn
./toto/titi/.svn
./toto/tata/.svn

我如何處理所有這些行rm -fr以刪除目錄及其內容?

-execFind 可以使用它找到的每個匹配項的選項執行參數。這是一種推薦的機制,因為您可以正確處理包含空格/換行符和其他字元的路徑。您必須先刪除目錄的內容,然後才能刪除目錄本身,因此請使用-r命令rm來實現此目的。

對於您的範例,您可以發出:

find . -name ".svn" -exec rm -r "{}" \;

您還可以通過添加檢查告訴 find 只查找名為 .svn 的目錄:-type d

find . -name ".svn" -type d -exec rm -r "{}" \;

警告謹慎使用rm -r它會刪除文件夾及其所有內容。

如果您只想刪除空目錄以及僅包含空目錄的目錄, find 可以使用-deleteand自己完成-empty

find . -name ".svn" -type d -empty -delete

引用自:https://unix.stackexchange.com/questions/89925