刪除包含某些字元的文件

刪除包含某些字元的文件

我的目錄中有一個文件列表,我需要刪除每個包含 0 或 7 的文件。有任何想法嗎?

答案1

您要做的是根據特定的條件測試評估您的文件,並根據條件測試的結果對每個文件執行操作。這就是該命令的確切目的find

這是一個便攜式(符合 POSIX 標準) 指令刪除內容包含「0」或「7」的常規檔案:

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

注意遞迴地搜尋目前目錄。

如果這不是您想要的,您可以檢查主資料庫是否-maxdepth可用(在這種情況下,您也可以使用主資料庫-delete;POSIX 都沒有指定):

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

或者,您可以應用以下中給出的技術:

答案2

grep -l '[07]' DirToYourFiles/* | xargs rm -f

grep -l表示僅列出檔名

[07]表示 0 或 7

xargs讓他們成為命令。

假設檔案名稱不包含空格、換行符、單引號、雙引號或反斜線字元。借助 GNU 實用程序,您可以透過以下方式使其更加可靠:

grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f

相關內容