Linux
如何使用 find 命令刪除匹配模式的文件?
我正在嘗試編寫一個 bash 命令,該命令將刪除與特定模式匹配的所有文件 - 在這種情況下,它是所有已建立的舊 vmware 日誌文件。
我試過這個命令:
find . -name vmware-*.log | xargs rm
但是,當我執行該命令時,它會阻塞所有名稱中包含空格的文件夾。有沒有辦法格式化文件路徑,以便 xargs 將其傳遞給 rm 引用或正確轉義?
我通常發現使用
-exec
for 選項find
更容易且更少混亂。嘗試這個:find . -name vmware-*.log -exec rm -i {} \;
之後的所有內容都
-exec
被視為為每個結果執行的命令,直到;
,它在此處被轉義,以便將其傳遞給find
。{}
替換為find
通常列印的文件名。一旦你確認它符合你的要求,你就可以刪除
-i
.
如果您有 GNU
find
,您可以使用以下-delete
選項:find . -name "vmware-*.log" -delete
要使用
xargs
和避免文件名中的空格問題:find . -name vmware-*.log -print0 | xargs -0 rm
但是,您的日誌文件的名稱中不應包含空格。文字處理文件和 MP3 文件可能有它們,但您應該能夠控制日誌文件的名稱。