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' {} \;
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"?
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' {} \;
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.
Tags bash find text-processing