在我的 macOS 系統上,我有一個包含 7,000 多個圖像的資料夾,需要刪除檔案名稱中帶有連字符的圖像。我在cd
進入目錄後嘗試了以下命令,但沒有得到回應(我是終端新手):
rm -rf -- -
$ rm ./-
find . -type f -regex '/-/' -exec rm {} \;
find . -name '-*' | xargs rm
find . -regex '/-/' -print0 | xargs -0 rm
答案1
該模式*-*
將符合目前目錄中的任何名稱包含破折號(字面意思是「至少包含一個 的名稱-
,可能以其他字串為前綴和/或後綴」)。這意味著你應該能夠做到
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
有些人更喜歡“one-liners”,這個循環可以寫成
for name in ./*-*; do rm "$name"; done
……儘管在大多數現代 shell 中將其作為多行命令鍵入肯定是可能的。