我在 linux 系统上,我想知道以下 find 的执行有什么问题:
mkdir a && touch a/b
find . -name a -type d -exec echo '{}' \;
./a
find . -name a -type d -exec rm -r '{}' \;
find: `./a': No such file or directory
echo 的调用仅用于测试目的。我希望最后一条命令完全删除目录“./a”并返回 0。相反,它会删除目录并生成错误消息。重复一遍,它确实删除了目录!这是怎么回事?
最佳答案
rm
执行没有问题。问题是 find
很困惑,因为它知道目录 ./a
在那里,它会尝试访问该目录以查找名为 a的目录
。但是,find 无法进入该目录,因为它已被删除。
避免这种情况的一种方法是做
find -name a -type d | xargs rm -r
这将使查找在执行 rm
命令之前继续进行。或者,您可以简单地忽略原始命令中的错误。
关于linux - 非零返回码,尽管 find -exec rm 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450062/