Nesse post compartilho um trecho de comando para usar no terminal. Esse comando permite que você substitua trechos de texto ou código dentro de todos os arquivos do servidor. Isso é muito útil para quando tem um tempo que replica em multiplos arquivos, sem ter que acessar cada um individualmente.

Segue abaixo um exemplo para substituir texto de arquivos .html

Código
find ./ -type f -name "*.html" -exec sed -i 's|TEXTO_ANTIGO|TEXTO_NOVO|g' {} +

Abaixo segue uma modificação para verificar outros tipos de arquivos, seguindo seus formatos:

Código
find ./ -type f \( -name "*.html" -o -name "*.css" -o -name "*.js" \) -exec sed -i 's|TEXTO_ANTIGO|TEXTO_NOVO|g' {} +

DICA EXTRA: No Mac você deve usar -exec sed -i ''

Explicação:
• ( … ): agrupa as condições.
• -o: ou (OR).
• -name “.html”: arquivos HTML.
• -name “.css”: arquivos CSS.
• -name “*.js”: arquivos JavaScript.
• sed -i: substitui diretamente nos arquivos.
• s|…|…|g: substituição global (usa | como delimitador para facilitar caminhos com /).

Tambem é possivel pegar um valor antigo, mas que tenha algum valor aleatório no meio, e trocar por um novo, como por exemplo: assets/img/logo-v1.png para assets/img/logo-v2.png adicionando [^"]*\ onde esta a versão. Ficaria assim: assets/img/logo-[^"]*\.png

Segue exemplo abaixo:

Código
find . -type f -name "*.html" -exec sed -i 's|TEXTO_ANTIGO[^"]*\OUTRA_PARTE|TEXTO_NOVO|g' {} +

Caso queira encontrar um texto especifico nos arquivos ou confirmar se ele existe antes de mudar, segue comando abaixo:

Código
grep -rnw ./ -e 'TEXTO_BUSCADO'

Se for em algum arquivo com formato especifico:

Código
grep -rnw --include="*.html" ./ -e 'TEXTO_BUSCADO'     

Para adicionar uma linha logo acima de outra, como por exemplo, adicionar um script no fechamento da tag Head:

Código
find . -type f -name "*.html" -exec sed -i '/<\/head>/i\
<script type="text/javascript" async src="LINK_DO_SCRIPT"></script>
' {} +

Explicação detalhada:

/<\/head>/: É a expressão regular que procura pela linha que contém

i\: É o comando do sed para inserir antes (de insert before)

Código
sed '/<\/head>/i\
<script ... ></script>
'

Isso insere o script antes da tag head.

Se você quiser adicionar logo abaixo do , você deve usar o comando a\ (de append, ou adicionar depois):

Código
sed '/<\/head>/a\
<script ... ></script>
'