我有一个带有多个 -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>&1
。 bash
接受扩展&>
语法,但您调用的 Bourne shell 或 ash 变体find -exec
不接受。