A sintaxe apropriada para redirecionar é 2>&1
. bash
aceita a sintaxe &>
estendida, mas a variante Bourne shell ou ash que você chamou de find -exec
não.
Eu tenho um comando find com vários argumentos -exec e gostaria que a saída (stdout e stderr) de um dos comandos fosse suprimida. Quando eu uso & > / path / to / file , ele envia o processo para o segundo plano em vez de redirecionar a saída.
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" &>/dev/null' _ "{}" \;
Encontrei uma maneira de contornar isso usando o comando abaixo (que também usa o caractere '&'), mas gostaria de saber por que ele envia o processo para o segundo plano em vez de redirecionar a saída como normalmente faria. Então, por que o comando abaixo funciona, mas o comando acima não funciona?
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" >/dev/null 2>&1' _ "{}" \;
Obrigado!
Tags find io-redirection