Rm
遞歸刪除具有給定副檔名的所有文件
我想刪除
*.o
目錄及其子目錄中的所有文件。但是,我收到一個錯誤:sashoalm@aspire:~/.Workspace.OLD$ rm -r *.o rm: cannot remove `*.o': No such file or directory
另一方面,
rm *.o
有效,但它不是遞歸的。
那是邪惡的:
rm -r
不是為了刪除文件,而是為了刪除目錄。幸運的是,可能沒有匹配的目錄*.o
。你想要的可以用 or 實現,
zsh
但不能用sh
orbash
(新版本的 bash 可以做到這一點,但前提是你globstar
用啟用了 shell 選項shopt -s globstar
)。globbing 模式是**/*.o
但也不限於文件(也許zsh
也有排除非文件的技巧)。但這更適合
find
:find . -type f -name '*.o' -delete
或(因為我不確定是否
-delete
是 POSIX)find . -type f -name '*.o' -exec rm {} +