Para lidar com nomes de arquivos difíceis, é melhor separar os nomes dos arquivos com caracteres NUL. O% GNUgrep
suporta isso com a opção --null
e xargs
suporta isso com a opção -0
. Assim, tente:
grep --null -rslZ "foo" | xargs -0 sed -i -- "s/foo/bar/g"
Usando um loop de shell
grep --null -rslZ "foo" | while IFS= read -r -d $'grep --null -rslZ "foo" | xargs -0 sed -i -- "s/foo/bar/g"
' file
do
sed -i -- "s/foo/bar/g" "$file"
done