使用多个 -exec 选项查找;重定向 &>/dev/null 一个 exec 命令将进程发送到后台

使用多个 -exec 选项查找;重定向 &>/dev/null 一个 exec 命令将进程发送到后台

我有一个带有多个 -exec 参数的 find 命令,并且希望抑制其中一个命令的输出(stdout 和 stderr)。当我使用&>/路径/到/文件,它将进程发送到后台而不是重定向输出。

find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" &>/dev/null' _ "{}" \;

我通过使用下面的命令(也使用“&”字符)找到了解决该问题的方法,但我想知道为什么它将进程发送到后台,而不是像通常那样重定向输出。那么为什么下面的命令可以工作,而上面的命令却不能呢?

find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" >/dev/null 2>&1' _ "{}" \;

谢谢!

答案1

重定向的正确语法是2>&1bash接受扩展&>语法,但您调用的 Bourne shell 或 ash 变体find -exec不接受。

相关内容