Wildcards
刪除目錄中文件名中有連字元的文件
在我的 macOS 系統上,我有一個包含 7,000 多張圖像的文件夾,並且需要刪除文件名中帶有連字元的圖像。進入目錄後,我嘗試了以下命令而沒有得到響應
cd
(我是終端新手):rm -rf -- - $ rm ./- find . -type f -regex '/-/' -exec rm {} \; find . -name '-*' | xargs rm find . -regex '/-/' -print0 | xargs -0 rm
該模式
*-*
將匹配目前目錄中包含破折號的任何名稱(字面意思是“包含至少一個 的名稱-
,可能以其他字元串為前綴和/或後綴”)。這意味著你應該能夠做到rm ./*-*
或者
rm -- *-*
-
刪除目前目錄中名稱包含字元的所有文件。在
zsh
shell 中,使用*-*(.)
as 模式會將匹配限制為僅正常文件(不是目錄,儘管rm
無論如何都無法刪除目錄)。如果這些文件太多而
rm
無法一次性處理,請find
像這樣使用:find . -maxdepth 1 -type f -name '*-*' -delete
我使用
-maxdepth 1
將搜尋限制為僅目前目錄,並且我添加-type f
了僅刪除正常文件。您還可以使用(有點慢)循環:
for name in ./*-*; do rm "$name" done
有些人更喜歡“單線”,這個循環可以寫成
for name in ./*-*; do rm "$name"; done
…儘管在大多數現代 shell 中絕對可以將其鍵入為多行命令。