Wildcards

刪除目錄中文件名中有連字元的文件

  • March 12, 2020

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

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

zshshell 中,使用*-*(.)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 中絕對可以將其鍵入為多行命令。

引用自:https://unix.stackexchange.com/questions/572634