Nunca use isso:
for f in $(find . -name \*.scala); do echo $f; gsed -i $f -e "s/\x0D$//"; done
Isso funciona até que você tenha um arquivo cujo nome tenha espaços em branco ou outros caracteres ativos em shell. Por um lado, o shell executará tanto divisão de palavras como expansão de nome de caminho na saída de $(find . -name \*.scala)
. Mesmo sem isso, o shell executará divisão de palavras e expansão de nome de caminho nas ocorrências sem aspas de $f
nos comandos echo
e gsed
.
Neste caso, felizmente, é fácil escrever código que funcione de maneira confiável: use a opção -exec
do find:
find . -name \*.scala -print -exec gsed -i -e 's/\x0D$//g' {} +
Se você quiser remover os pontos-e-vírgulas à direita ao mesmo tempo, basta adicionar mais um comando de substituição ao script sed
:
find . -name \*.scala -print -exec gsed -i -e 's/\x0D$//g; s/;$//;' {} +