以優雅的方式刪除目錄內容

以優雅的方式刪除目錄內容

我想刪除目前工作目錄的所有內容。如何高效、優雅地做到這一點?

我有幾個文件、目錄,其中一些以點開頭,例如:

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]*

那行得通嗎?或者您還有其他文件名模式需要匹配?

相關內容