我想删除所有文件夹/目录在当前文件夹(及其内容)中,而不触及当前文件夹中的文件。
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
-mindepth
1
-type d
find
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