優化列出和刪除檔案的方式

優化列出和刪除檔案的方式

我需要列出並刪除 .php、.xml 檔案。為此,我使用find命令。

列出: find . -type f -name \*.php -print0

刪除 : find . -type f -name \*.php -print0 | xargs -0 rm -r

當我跑find兩次時。是否可以儲存第一個命令的結果,然後在第二個命令中重複使用?

謝謝。

答案1

find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list

假設您想在決定刪除它們之前查看該清單。如果沒有,您可以簡單地執行以下操作:

find . -name '*.php' -type f -print -delete

(請注意-print0, 、-delete-r-0不是標準的,但受 GNU 實現支援)

另請注意,雖然相對安全,但在第一個解決方案中,有人可能會在您運行and命令find -delete之間將目錄重命名為某些敏感區域的符號鏈接,並讓您刪除您不打算刪除的文件。跑兩次,第二次可以避免這種情況。findxargsfind-delete

答案2

由於您需要.php.xml文件,因此find命令應如下所示:

find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +

每個檔案區塊僅使用一次+的指令。如果我們使用了,我們將為每個文件運行一個命令。findrm\;rm

相關內容