您好我的一个磁盘上有很多名为“@eaDir”的文件夹,我想搜索,查找所有文件夹并删除它们及其内容。
我知道这可能是find和rm命令的组合,但我无法理解它们。有人可以帮忙吗?
答案 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
这应该适合你。