Você pode usar uma combinação de find
, xargs
e sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
Eu tenho um nome de função que foi digitado incorretamente e quero alterá-lo. A função é chamada em muitos lugares do projeto.
Como posso fazer isso com um comando do Linux em SUSE ?
Você pode usar uma combinação de find
, xargs
e sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
Uma variante feita com Perl :
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/oldfunction/newfunction/g'
Uma vantagem é que o Perl criará os arquivos de backup (com .bak
extension) para que, se você estragar tudo, possa reverter.
(A opção -print0
para encontrar e a opção -0
para xargs são necessárias apenas se você tiver alguma arquivos ou diretórios com espaços neles.)
Isso é exatamente a mesma coisa que a solução de John T:
find ./ -type f -name "*.php" -exec sed -i 's/\<oldfunction\>/newfunction/g' {} \;
Eu normalmente não canalizo para xargs
EDIT: mais caro .... por comentários abaixo.
Suplemento a outras sugestões muito boas já postadas: faça um backup de todo o site (cp -r / var / www / var / wold) e faça a edição lá. Pessoalmente, eu mudaria os arquivos modificados, por exemplo, / var / www / changed e testaria o link para garantir que todos os scripts funcionem antes de ir viver.