使用unix下的find删除包含其所有内容的目录

时间:2014-07-13 14:06:45

标签: bash find

我正在编写一个删除每个找到的ShellScript。???文件夹及其内容。 我写了这个:

find $DRIVE -name 'found.???' -type d -exec rm -r {} \;

它做我想要的,但是给出了这个错误:

find: „/media/.../found.000”: No such file or directory
find: „/media/.../found.001”: No such file or directory

我该怎么办? 谢谢!

2 个答案:

答案 0 :(得分:1)

这不是一个真正的问题。 find将预处理一些结果,当它试图删除一些已被删除的目录时,你将获得stderr。

您可以忽略错误消息,使用-depth使其在DFS中遍历,或强制它到-prune目录。即

find "$DRIVE" -mindepth 1 -depth -name 'found.???' -type d -exec rm -r {} \;

find "$DRIVE" -mindepth 1 -name 'found.???' -type d -prune -exec rm -r {} \;

注意,mindepth 1非常重要,因此您不会意外删除"$DRIVE"

答案 1 :(得分:0)

我猜你正在尝试填充基于FAT的fs。尝试展示这些文件名的真实案例:

find "$DRIVE" -name 'FOUND.???' -type d -exec rm -r {} \;

并引用你的变量。