
我的目錄中有一個文件列表,我需要刪除每個包含 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