我想删除当前工作目录的所有内容。如何高效、优雅地做到这一点?
我有几个文件、目录,其中一些以点开头,例如:
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]*
那行得通吗?或者您还有其他文件名模式需要匹配?