Buscar cadenas de texto (y remplazar) en GNU/Linux
28 enero, 2009 2 comentarios
find "ruta" -type f | xargs grep "cadena a buscar"
Con find (y la opción usada) se buscan archivos en el directorio especificado (usar . para el directorio actual), el comando xargs combina cada elemento con el comando especificado y grep busca patrones en el archivo.
Tambień en varias ocasiones tendremos la necesidad de buscar una cadena de texto y suplirla por otra en n cantidad de archivos, para lograr esto de manera sencilla:
for arg in `find <ruta del directorio de los archivos> -type f`; do perl -pi -e 's/<texto a buscar>/<texto nuevo>/g' $arg; done;
un ejemplo:
for arg in `find /etc/apache2 -type f`; do perl -pi -e 's/90.0.0.20/192.168.1.60/g' $arg; done;
[Fuente: LinuxData y CómoCarajos.]










All blog content is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Hola:
Resulta que al hacer la búsqueda por ejemplo y buscar en un archivo llamado:
/Documentos/mi tarea de español.odt
grep: ./Documentos: No existe el fichero ó directorio
grep: mi: No existe el fichero ó directorio
grep: tarea: No existe el fichero ó directorio
grep: de: No existe el fichero ó directorio
grep: español.odt: No existe el fichero ó directorio
No está tomando los nombres correctamente ¿como se soluciona?
Hola Freyman, ¡perdón por la respuesta tardía! El problema que tenés es porque la consola reconoce los espacios como parámetros de un comando (o incluso para ejecutar tuberías, como es el “|” u otro comando seguido como es “&&”). En tu caso deberías pasarle:
/Documentos/mi\ tarea\ de\ español.odt
¡Saludos!