Wildcards

rm -rf 所有文件和所有不帶 .& .. 錯誤

  • December 20, 2021

rm -rf /some/path/*刪除該目錄(和子目錄)中的所有非隱藏文件。

rm -rf /some/path/.*刪除該目錄(但不是子目錄)中的所有隱藏文件,並給出以下錯誤/警告:

rm: cannot remove directory: `/some/dir/.'
rm: cannot remove directory: `/some/dir/..'

什麼是在目標目錄中遞歸刪除所有隱藏和非隱藏文件和文件夾而不收到關於.and的警告/錯誤的正確方法..

您可以隨時將錯誤消息發送到/dev/null

rm -rf /some/path/.* 2> /dev/null

你也可以

rm -rf /some/path/
mkdir /some/path/

…那麼您就不必首先為隱藏文件而煩惱。

*匹配所有非點文件,.[!.]*匹配所有點文件,除了.和名稱以 開頭的文件..,匹配所有點文件,..?*除了... 它們一起匹配除.和之外的所有文件..。如果這三個模式中的任何一個都不匹配,則它會擴展為自身;rm -f不關心不存在的論點,所以這沒關係。

rm -rf ..?* .[!.]* *

您也可以使用find. 這更複雜,但即使文件太多,上面的萬用字元會超出系統的命令行長度限制,它也有工作的優勢。

find . -name . -o -prune -exec rm -rf -- {} +

您可能會發現刪除並重新創建目錄更清晰。即使另一個程序同時在原始目錄中創建文件,這也具有導致空目錄的優點(或缺點,視情況而定)。

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