Seu pipeline não altera arquivos. Ele extrai linhas que correspondem à expressão regular usando grep e, em seguida, altera esses dados, mas não tenta fazer alterações em nenhum arquivo.
Em vez disso, assumindo o GNU sed :
find ~/dev_web/_site -type f \
-exec grep -qF 'http://localhost:4000' {} ';' \
-exec sed -i 's#http://localhost:4000#https://another.site#g' {} +
Isso localizaria todos os arquivos regulares no diretório ~/dev_web/_site . Para cada arquivo, grep primeiro testa se o arquivo contém a string dada. Em caso afirmativo, o GNU sed é invocado para fazer uma substituição no local.
A etapa grep poderia ser omitida, mas o GNU sed atualizaria o registro de data e hora da modificação nos arquivos todos sem ela.
Você pode querer apenas olhar em um subconjunto dos arquivos nos diretórios abaixo de ~/dev_web/_site . Se esse for o caso, restrinja a pesquisa com algo como -name '*.js' (ou qualquer padrão de nome que você deseja corresponder) logo após -type f .
Adicionar -print antes de -exec sed ... imprimir os nomes de caminho dos arquivos que find daria a sed .
Relacionados: