如何删除当前目录中的所有文件夹?

如何删除当前目录中的所有文件夹?

我想删除所有文件夹/目录在当前文件夹(及其内容)中,而不触及当前文件夹中的文件。

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {}

追溯:

find: missing argument to `-exec'

答案1

帖子 如何仅删除目录而不影响文件 有这个非常简单的解决方案:

要删除所有目录和子目录并仅保留工作目录中的文件,我发现这个简洁的命令对我有用:

rm -r */

它使用 bash 通配符*/,其中星号后跟斜杠仅匹配目录和子目录。

上述rm命令不会删除名称以点(.)开头的文件夹,这也许是大多数人希望的。

用户 Romeo Ninov 推荐的配方也可以在这篇文章中找到:

find . -maxdepth 1 -mindepth 1 -type d

然后

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

添加解释:

find由于 而从当前目录启动,并且 仅将和都设置 为.而停留在当前目录中。指示仅匹配目录。-maxdepth-mindepth1-type dfind

find还有一个-exec标志,可以将其结果传递给另一个函数,在这种情况下rm。这'{}' \;是传递这些结果的方式。请参阅此答案以获得更完整 的{}解释\;

答案2

我不知道如何把这两个find咒语结合起来

# delete the contents of directories
find . -depth -mindepth 2 -print -delete

# then delete the directories
find . -mindepth 1 -type d -print -delete

相关内容