Como pesquisar e substituir arquivos de backup recursivamente no linux?

1

Gostaria de pesquisar recursivamente por uma string dentro de todos os arquivos em uma pasta.

Se a string foi encontrada, faça o backup do arquivo no mesmo local (copie para <filename>-orig ) e substitua a string encontrada por outra.

Como fazer isso?

Posso fazer isso com um único comando? Obrigado.

    
por AlikElzin-kilaka 13.07.2016 / 15:38

1 resposta

0

Você pode combinar duas operações -exec de find , primeiro para localizar todos os arquivos que contenham uma string correspondente e, em segundo lugar, substituir a string pela palavra-chave replace (mantendo o backup do arquivo original), como

find . -type f -exec grep -il "searchstring" {} \; -exec sed -i.bak \
's/searchstring/replacestring/' {} \;

Explicação:

  • -exec grep -il "searchstring" : pesquisa por "pesquisa"
  • -exec sed -i.bak 's/searchstring/replacestring/' : Se algum arquivo encontrado contiver string, mantenha o backup do arquivo e substitua por "replacestring".

Observe que, nesse caso, o segundo comando só será executado se o primeiro retornar com êxito.

    
por 14.07.2016 / 07:53