Buscar y reemplazar con grep y perl

4

Me gustaría grep y reemplazar texto específico en archivos de texto dentro de un directorio y todos los subdirectorios. Intento lo siguiente:

ls -R | egrep '.*\.txt' | perl -i -p -e 's/one.a/two.a/g'

Aunque grep escupe una lista y esto se ejecuta, parece que no consigo que perl escriba realmente en los archivos. Si es posible, me interesa aprender a hacer esto sin el uso de find .

¿Alguien puede ver dónde me equivoco?

Gracias, jml

    
pregunta jml 08.02.2014 - 06:34

1 respuesta

2

Hay dos problemas menores: primero, para canalizar los nombres de archivos a un perl de una sola línea de esta manera, debe usar el comando de xargs .

En segundo lugar, deberás pasar la ruta completa al perl one-liner, ya que podría estar en un subdirectorio, por lo que sería mejor usar find .

Aquí hay un comando de trabajo:

find . -name "*.txt" | xargs perl -i -p -e 's/one.a/two.a/g'
    
respondido por el BringMyCakeBack 08.02.2014 - 07:41

Lea otras preguntas en las etiquetas