
我想刪除目前工作目錄的所有內容。如何高效、優雅地做到這一點?
我有幾個文件、目錄,其中一些以點開頭,例如:
touch .abc; touch abcd ; mkdir foobar; touch "file name" "#"
我正在尋找 posix 相容的、優雅的解決方案,以使該目錄為空。我會發表一些我的想法,但沒有一個是完美的。
答案1
rm -rf -- * .*
這是可移植的並且可以工作,但它很醜陋,因為除了 with 之外zsh
,它會發出警告:
rm: cannot remove directory: `.'
rm: cannot remove directory: `..'
答案2
嘗試這個:
find . -maxdepth 1 -not -name \. -exec rm -rf \{\} ;
答案3
POSIXly:
rm -rf -- * .[!.]* ..?*
如果文件列表太大,那麼這個可能會失敗,而這個則不會:
find . ! -name . -prune -exec rm -rf {} +
和zsh
:
rm -rf -- *(D)
答案4
怎麼樣
rm -rf * .[a-z]* .[A-Z]* .[0-9]*
那行得通嗎?或者您還有其他文件名模式需要匹配?