嗨,我的一张磁盘上有很多名为“@eaDir”的文件夹,我想搜索,找到所有文件夹并删除它们及其内容。
我知道这可能是 find 和 rm 命令的组合,但我无法弄清楚它们。任何人都可以帮忙吗?
尝试这个:
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
find /path/to/the/disk -type d -name "@eaDir" -delete
请注意,这里的顺序是基本的:引用手册页,
警告:不要忘记 find 命令行被评估为表达式,因此将 -delete 放在首位将使 find 尝试删除您指定的起点以下的所有内容。
因此,与往常一样,首先尝试使用 .find
命令-print
,然后,当您检查一切正常时,将其替换为-delete
. 请注意,这-delete
意味着-depth
,因此,要对 进行有意义的测试-print
,您应该在表达式中明确指定它:
在测试稍后打算与 -delete 一起使用的 find 命令行时,应显式指定 -depth 以避免以后出现意外。
转到根文件夹或目录并执行以下命令:
find . -path '*/@eaDir/*' -delete -print && find . -path '*/@eaDir' -delete -print
这应该适合你。