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: