bash - find -exec - 仅抑制查找错误,但不抑制执行命令的错误

标签 bash find exec stderr

运行find命令时,可能会输出“No such file or directory”错误。

正如对 find - suppress "No such file or directory" errors 的回答问题在这里:https://stackoverflow.com/a/45575053/7939871 ,将文件描述符 2 重定向到 /dev/null 将会很高兴地消除来自 find 的错误消息,例如 No such file or directory:

find yada-yada... 2>/dev/null

这完全没问题,只要不使用 -exec 来执行命令即可。因为 2>/dev/null 也会消除执行命令中的错误。

举个例子:

$ find /root -exec sh -c 'echo "Error" >&2' {} \; 2>/dev/null
$ find /root -exec sh -c 'echo "Error" >&2' {} \;
Error
find: ‘/root’: Permission denied

有没有办法消除 find 中的错误,同时保留执行命令中的错误?

最佳答案

find命令中使用-exec选项是xargs的集成命令转换为 find 命令。

您始终可以通过将 find 输出传输到 xargs 命令中来将 find-exec 分开。

例如:

 find / -type f -name "*.yaml" -print0 2>/dev/null | xargs  ls -l
 

关于bash - find -exec - 仅抑制查找错误,但不抑制执行命令的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72031430/

相关文章:

mysql - 在 sql 字符串中使用 bash 参数的脚本问题

powershell - 替换Word文件中页眉、页脚中的特定文本和普通文本

c++ - 如何将stderr重定向到/dev/null

php - exec 总是返回 -1(或 127)

bash - 已经通过 ssh 登录到服务器后如何传输文件?

bash - 根据内容重命名文件

bash - 在 bash 的行尾/中间自动完成

java - findbug 中 Possible null pointer dereference 是什么意思?

replace - 原子: Find and Replace with Incrementing Number

c - 如何通过调用 exec 函数族的成员来获取程序运行的返回值?