如何記錄 xargs -0 rm?

如何記錄 xargs -0 rm?

我有一個簡單的需求,即遞歸查找並刪除特定擴展名的檔案。因此,我有語法可以查找並刪除文件並將它們通過管道傳輸到xargs -0 rm,但我似乎無法創建已刪除文件的日誌。

到目前為止我所擁有的:

find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm

答案1

rm刪除檔案時通常是靜默的。如果您想建立顯示已刪除檔案的日誌,請新增該-v選項。因此,替換:

xargs -0 rm

和:

xargs -0 rm -v >log

答案2

您可以使用find它本身來刪除文件,同時將它們的名稱寫入標準輸出:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

筆記:-delete和選項的順序-print很重要。只有當第一個選項傳回 true 時才會套用第二個選項,也就是如果第一個-delete選項無法刪除文件,則其名稱將不會列印到標準輸出。如果你放在-print前面,那麼它會將檔案名稱放入標準輸出,無論是否-delete真的可以刪除該檔案。

筆記2:我必須轉義括號和垂直線才能使正則表達式預設與我的系統的findutil 一起工作。或者,您可以指定-regextypeposix-egrep,例如。無論如何,值得先嘗試find不帶選項的命令-delete來檢查它是否正確找到文件:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

相關內容