linux - 非零返回码,尽管 find -exec rm 有效

标签 linux shell

我在 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/

相关文章:

bash - bash 终端中的 l(小写 L)命令

python - 构建 python Shell

Linux cron 作业无法执行在 shell 中运行的部分脚本

linux - 执行 if...then...fi 时出现 Cygwin 错误 - Bash 脚本

linux - 带有 expect 模块的 scp 不工作

php - 使用 Apache 和 PHP 处理线程

regex - 使用正则表达式搜索和替换具有最小长度的字母数字字符串,同时忽略以特定字符开头的字符串

linux - 如何在 Rust 中获取打开的 std::fs::File 的文件名?

linux - 向父进程的另一个线程中生成的子进程发送 TERM 信号

linux - 我想在一个站点的深处调用整个字母表的多个字母,这很容易做到吗