O shell está expandindo a parte >> %
antes que xargs
o veja.
Se você precisar fazer redirecionamentos de shell, terá que tentar algo assim:
find . -name "*.txt" -exec sh -c '
echo "hello world" >> "$0"
' {} \;
Como funciona:
-
find
substitui{}
por cada arquivo correspondente a -
bash -c "some command" arg0...
conjuntos$0...
dentro do script"some command"
Como alternativa, você pode usar um comando como sed
que não dependa de >>
, por exemplo,
find . -name "*.txt" -exec sed -i -e '$a\
hello world' {} \;
Referências: