Solução 1 : uma maneira é usar find
com xargs
:
find /dir -type f -print0 | xargs -0 sed -i 's#http://domain.com#https://www.domain.com#g'
Solução 2 : outra seria usar find
com -exec
, muito semelhante à sua pergunta:
find /dir -type f -exec sed -i 's#http://domain.com#https://www.domain.com#g' {} +
Ambas as soluções chamam sed
com vários arquivos como argumentos. Portanto, sed
não é chamado uma vez para cada arquivo, mas para cada conjunto de arquivos.
Solução 3 : em vez de sed
, você também pode usar perl
para a tarefa de substituição de pesquisa:
perl -i -pe 's#http://domain.com#https://www.domain.com#g' file
Combinado com o comando find
/ xargs
:
find /dir -type f -print0 | xargs -0 perl -i -pe 's#http://domain.com#https://www.domain.com#g'