我需要列出並刪除 .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
之間將目錄重命名為某些敏感區域的符號鏈接,並讓您刪除您不打算刪除的文件。跑兩次,第二次可以避免這種情況。find
xargs
find
-delete
答案2
由於您需要.php
和.xml
文件,因此find
命令應如下所示:
find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +
每個檔案區塊僅使用一次+
的指令。如果我們使用了,我們將為每個文件運行一個命令。find
rm
\;
rm