我發現了幾個只要檔案名稱中沒有空格就可以工作的範例。不幸的是,我的檔案名稱中有空格(不是我的選擇,事實上它們是我需要刪除的)。
例如,我認為這會起作用:
尋找 。 -類型 f | ).MOV | grep ).MOV | xargs rm
因為我想刪除以下文件:
- L112 (1).MOV
- L113 (1).MOV
- L113 (2).MOV
- ETC。
我想保留這些文件
- L112.MOV
- L113.MOV
- L114.MOV
- ETC。
這可以正確找到文件:
尋找 。 -類型 f | grep ).MOV
但是當我透過管道將其傳輸到 rm 時,檔案名稱中的空格將其搞砸了。
任何幫助將不勝感激。
答案1
rm *\).MOV
答案2
告訴xargs
使用換行符號作為分隔符號:
find . -type f | grep ).MOV | xargs -d'\n' rm
更好的是,find
進行匹配和使用-print0
並xargs -0
允許任何檔案名稱中的字符,甚至\n
!
find . -type f -name '*).MOV' -print0 | xargs -0 rm
更好的是,直接find
打電話就好了rm
。
find . -type f -name '*).MOV' -exec rm {} +
最好跳過rm
並進行find
刪除。
find . -type f -name '*).MOV' -delete
或者在這種具體情況下,誰需要所有重型機械?
rm *\).MOV
答案3
嘗試這個:
find . -name "*).MOV" -exec rm {} \;
答案4
在大多數 Unix 安裝中,您可以透過在檔案名稱前面加上反斜線來表示檔案名稱中的空格。例如,試試看:
mkdir blah
cd blah
touch file1
touch file2
touch "file 3"
touch "file 4"
執行“ls”,您應該會看到以下內容:
文件3 文件4 文件1 文件2
現在執行“ls *\ *”,您應該會看到其中包含空格的所有內容:
文件 3 文件 4
那麼也許您只需要一個“rm *\ *”?或稍微修改該正規表示式以滿足您的需求。
希望有幫助!