Você não usou a opção -print0
com find
.
Estou me perguntando por que o seguinte comando não funcionaria:
sudo find . -name index.htm | xargs -0 sudo sed -i 's/pattern1/pattern2/g'
Quando executamos os dois comandos separadamente, eles funcionaram como esperado, find
encontrou todos os arquivos que eu estava precisando alterar e sed
substituiu corretamente o texto de acordo com o regex (obviamente quando eu executei o comando sed separadamente i forneceu um nome de arquivo como argumento). Ao executá-los juntos com xargs -0, recebi
sed:
./index.htm
./folder1/index.htm
./folder1/subfolder2/index.htm
...
...
./lastfolder/index.htm: No such file or directory
Acabei usando
sudo find . -name index.htm -exec sudo sed -i 's/pattern1/pattern2/g' {} \;
e funcionou bem, eu estava curioso para saber porque usar xargs não funcionava ....
Existe algum espaço no diretório ou nos nomes dos arquivos?