Wildcards

如何遞歸刪除帶有萬用字元的目錄?

  • March 24, 2017

我在 WD My Book World Edition 上通過 SSH 工作。基本上我想從一個特定的目錄級別開始,並遞歸刪除所有匹配的子目錄.Apple*。我該怎麼做呢?

我試過了

rm -rf .Apple*rm -fR .Apple*

既沒有刪除子目錄中與該名稱匹配的目錄。

find對於有選擇地對整棵樹執行操作非常有用。

find . -type f -name ".Apple*" -delete

在這裡,-type f確保它是一個文件,而不是一個目錄,並且可能不是你想要的,因為它也會跳過符號連結、套接字和其他東西。您可以使用! -type d,字面意思不是目錄,但您也可以刪除字元設備和塊設備。我建議查看-type手冊頁上的謂詞find

要嚴格使用萬用字元,您需要高級 shell 支持。Bash v4 有一個globstar選項,它允許您使用遞歸匹配子目錄**zsh並且ksh也支持這種模式。使用它,你可以做到rm -rf **/.Apple*。這不是 POSIX 標準,也不是很便攜,所以我會避免在腳本中使用它,但對於一次性互動式 shell 操作來說,這很好。

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