Wildcards
如何遞歸刪除帶有萬用字元的目錄?
我在 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 操作來說,這很好。