4

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

我知道这可能是 find 和 rm 命令的组合,但我无法弄清楚它们。任何人都可以帮忙吗?

4

3 回答 3

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
于 2012-12-25T23:47:21.900 回答
1
find /path/to/the/disk -type d -name "@eaDir" -delete

请注意,这里的顺序是基本的:引用手册页,

警告:不要忘记 find 命令行被评估为表达式,因此将 -delete 放在首位将使 find 尝试删除您指定的起点以下的所有内容。

因此,与往常一样,首先尝试使用 .find命令-print,然后,当您检查一切正常时,将其替换为-delete. 请注意,这-delete意味着-depth,因此,要对 进行有意义的测试-print,您应该在表达式中明确指定它:

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

于 2012-12-25T23:47:43.973 回答
0

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

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

这应该适合你。

于 2016-06-14T19:06:12.400 回答