Você está procurando o comando sed . Por exemplo, para substituir o "dog" por "cat" em todos os arquivos de texto no diretório atual:
sed -i 's/dog/cat/' *.txt
Eu uso o comando grep para procurar uma string em muitos arquivos. Existe algo semelhante a "pesquisar e substituir"?
sed é a ferramenta certa; mas, como alternativa, você pode até usar os comandos ex em vim :
vim -c 'args <files> | argdo %s/cat/dog/g | x'
em que <files> é a lista de arquivos ou padrões em que você deseja fazer a substituição.
sed vem à mente. Exemplo:
sed s/cat/dog/ <input >output
Isso procura cat em uma linha e coloca o cão em seu lugar na entrada do arquivo e grava na saída do arquivo.
Você pode usar o Vim no modo Ex:
for b in *.txt
do
ex -sc '%s/OLD/NEW/g|x' "$b"
done
% seleciona todas as linhas
s substituto
g substitua todas as ocorrências em cada linha
x salvar e fechar
Tags command-line files