text para localizar e substituir em todos os arquivos e em todos os diretórios

1

Desejo substituir todas as ocorrências de 1800 102 6022 por 1860 266 2666 em todos os arquivos. Eu tenho arquivos diferentes em diretórios diferentes que podem conter 1800 102 6022 .

Estou usando:

perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" /*.jsp 

que funciona para uma única pasta. Eu quero executar isso no diretório pai e aplicá-lo a todos os arquivos.

    
por user166086 16.04.2016 / 15:31

2 respostas

1

Use o comando find para fazer isso,

find /xxx -name '*.jsp' -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;
    
por 16.04.2016 / 16:07
0

Existem várias maneiras de fazer isso:

  1. Use find :

    find . -type f -name "*.jsp" \ 
      -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;
    
  2. Se você estiver usando bash , use extglob :

    shopt -s globstar 
    perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" **/*jsp
    
  3. Faça tudo em Perl, iterando os arquivos no diretório, mas isso não vale o esforço aqui.

por 16.04.2016 / 16:08