Encontre e substitua as palavras no arquivo de texto recursivamente

0

Eu tenho uma árvore de pastas dentro dessas pastas, há muitos arquivos de texto. Esses arquivos têm o mesmo nome "log.txt" e o mesmo formato. Por exemplo, dentro de cada arquivo, podemos ver várias linhas como:

date
name
. 
.
.

Como eu posso usar o comando find para encontrar todos os arquivos de texto "log.txt" nesta pasta de árvore e então substituir a palavra "date" dentro de cada arquivo de texto pela palavra "dating"?

    
por Gilles 12.03.2016 / 00:52

2 respostas

0

Supondo que você esteja atualmente na raiz da árvore (caso contrário, substitua '.' pelo nome do diretório). Você pode substituir 'log.txt' por '* .txt' ou o que você quiser.

find . -type f -name 'log.txt' -exec sed -i 's/date/dating/g' {} \;
    
por 12.03.2016 / 01:01
1

Você pode usar find e sed na raiz dos diretórios:

find . -type f -name 'log.txt' -exec sed -i 's/^date$/dating/' {} +
  • find . -type f -name 'log.txt' encontrará todos os arquivos log.txt recursivamente

  • No predicado -exec de find , sed -i 's/^date$/dating/' {} + substituirá date em uma linha dos arquivos com dating , em vigor.

por 12.03.2016 / 01:01