Linux

如何使用 find 命令刪除匹配模式的文件?

  • March 26, 2017

我正在嘗試編寫一個 bash 命令,該命令將刪除與特定模式匹配的所有文件 - 在這種情況下,它是所有已建立的舊 vmware 日誌文件。

我試過這個命令:

find . -name vmware-*.log | xargs rm

但是,當我執行該命令時,它會阻塞所有名稱中包含空格的文件夾。有沒有辦法格式化文件路徑,以便 xargs 將其傳遞給 rm 引用或正確轉義?

我通常發現使用-execfor 選項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 文件可能有它們,但您應該能夠控制日誌文件的名稱。

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