Find

Linux查找刪除文件夾中的文件

  • August 24, 2012

目標是找到具有給定名稱的目錄並刪除其中的所有文件,保留實際目錄

find /home/www/sites/ -iname '_cache' -exec du -hs {} \;

這給了我一個文件列表及其大小

204K    /home/www/sites/test.site.com/html/development/Temporary/_cache
904K    /home/www/sites/test.site2.com/html/development/Temporary/_cache

是否可以使用 Linux find 命令來實現?

我嘗試了一些東西,它似乎正在工作,這是 Alex 在此處發布的類似解決方案。

find . -iname '_cache' | xargs -I {} find {} -type f -maxdepth 1 -exec rm {} \;

它應該只刪除在 _cache 目錄中找到的文件,並且只在這個目錄中。它不會從 _cache 目錄的子目錄中刪除任何文件。

當然在使用之前嘗試一下,而不是rm,放上ls或無害的東西。

我還沒有徹底測試過這個邏輯……但你可以在一個循環中做一些事情,比如:

for findname in $(find /path/to/search -name '_pattern')
do
 find $findname -type f
done

因此,您將獲得與您的搜尋模式匹配的文件列表,然後通過新搜尋遍歷每個文件以查找要刪除的文件。

編寫方式將為您提供文件列表,因此您可以將其重定向到文件,然後使用 rm 循環遍歷該文件。您還可以在 for 循環中將 exec 附加到 find 中。我當然建議先按書面方式執行以測試邏輯並確保匹配看起來不錯。

引用自:https://serverfault.com/questions/420925