以优雅的方式删除目录内容

以优雅的方式删除目录内容

我想删除当前工作目录的所有内容。如何高效、优雅地做到这一点?

我有几个文件、目录,其中一些以点开头,例如:

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

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

相关内容