Unix删除具有特定名称的目录中的所有文件夹

时间:2012-12-25 23:44:31

标签: unix find rm

您好我的一个磁盘上有很多名为“@eaDir”的文件夹,我想搜索,查找所有文件夹并删除它们及其内容。

我知道这可能是find和rm命令的组合,但我无法理解它们。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

试试这个:

find . -type d -name '@eaDir' -print0 | xargs -rt0 rm -rv

除了xargs使用明确的长选项之外,这里的内容相同:

find . -type d -name '@eaDir' -print0 | xargs --no-run-if-empty --verbose --null rm -rv

(如果您正在编写需要由其他人维护/审核的脚本,使用长选项总是一个好主意)

但在此之前:

man find
man xargs

答案 1 :(得分:1)

find /path/to/the/disk -type d -name "@eaDir" -delete

请注意,此处的订单是基本的:引用联机帮助页,

  

警告:不要忘记将find命令行计算为表达式,因此首先使用-delete会使find尝试删除指定起始点以下的所有内容。

因此,一如既往,首先使用find尝试-print命令,然后,当您检查一切正常时,请将其替换为-delete。请注意,-delete隐含-depth,因此,要使用-print进行有意义的测试,您应该在表达式中明确指出:

  

在测试稍后打算与-delete一起使用的find命令行时,您应该明确指定-depth以避免以后出现意外。

答案 2 :(得分:0)

转到根文件夹或目录并执行以下命令:

find . -path '*/@eaDir/*' -delete -print && find . -path '*/@eaDir' -delete -print

这应该适合你。