03/09/2010

ad.

Linux: como inserir ou alterar texto em vários arquivos simultaneamente

Se você alguma vez já teve que editar uma série de arquivos para remover, inserir ou alterar algum texto, sabe como isso pode ser desesperador.

No desenvolvimento do site de relacionamentos Cupido.com.br, fizemos uma interface “genérica”, nada deveria ficar no código fonte, apenas nos templates. Mas sempre sobra alguma coisa. E foi justamente com o nome do site. Assim, para aproveitar o mesmo sistema em portais “irmãos”, eu tive que caçar e alterar o nome por mais de uma centena de arquivos de templates. A solução? O bom e velho perl.
Veja o comando:

perl -p -i -e “s/Cupido.com.br/__portal_name__/g” *.html

Explicação dos comandos:
-p -> assume um loop (o mesmo que -n no sed)
-i -> edita os arquivos (realiza a operação no arquivo e não apenas na saída)
-e -> executa a linha de programação

também poderia utilizar o sed

sed ‘s/Cupido.com.br/__portal_name__/g’ *.html

Nos dois casos, todos os arquivos com a extensão html encontrados no diretório serão alterados.

Não se esqueça de fazer um backup antes de executar o comando. Sacomé, melhor prevenir…