Você pode executar sed
sem -i
e passar pela saída com less
grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less
Em seguida, execute sed
com -i.bak
para criar backups que você possa diferenciar posteriormente
grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct
Editar: Como sugerido no comentário, use grep --null | xargs -0
. Isso faz com que os nomes de arquivos sejam finalizados pelo byte nulo, o que o torna seguro para nomes de arquivos com caracteres incomuns, como nova linha. Sim, \n
é um caractere válido em um nome de arquivo unix. Os únicos caracteres proibidos são barra /
e o caractere nul %code%