刪除目錄中檔案名稱中帶有連字符的文件

刪除目錄中檔案名稱中帶有連字符的文件

在我的 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 -- *-*

刪除-目前目錄中名稱包含字元的所有檔案。

zshshell 中,使用*-*(.)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 中將其作為多行命令鍵入肯定是可能的。

相關內容