exec
faz o que diz: usa exec()
. Ele não envolve um shell a menos que seja informado para ( -exec bash ...
), e se ele ainda ainda precisar de aspas simples para impedir que o shell interativo interprete as interpolações variáveis. (O shell não é mágico e não sabe que você pretendia que aqueles fossem interpolados por outra coisa.)
Por exemplo, quando você usa o seguinte comando:
find . -type f -exec echo $(file={}; echo ${file:0:5}) \;
seu shell primeiro executa a substituição do processo executando $(file={}; echo ${file:0:5})
, que simplesmente gera {}
, então executa o comando final:
find . -type f -exec echo {} \;