Rm

遞歸刪除具有給定副檔名的所有文件

  • April 21, 2021

我想刪除*.o目錄及其子目錄中的所有文件。但是,我收到一個錯誤:

sashoalm@aspire:~/.Workspace.OLD$ rm -r *.o
rm: cannot remove `*.o': No such file or directory

另一方面,rm *.o有效,但它不是遞歸的。

那是邪惡的:rm -r不是為了刪除文件,而是為了刪除目錄。幸運的是,可能沒有匹配的目錄*.o

你想要的可以用 or 實現,zsh但不能用shor bash(新版本的 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 {} +

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