IngDiaz

Buscar palabra o frase dentro de todos los archivos de un directorio | GNU/Linux

¡Hola a todos!. A veces necesitamos encontrar una palabra o frase (cadena de texto) dentro de los archivos que están en un directorio y/o sus respectivos subdirectorios, más que todo para identificar un archivo que nos interese; para mi caso, me ha sido muy útil para encontrar un fragmento de código fuente. Para éste fin, usaremos un comando muy conocido y poderoso, el cual es grep.

grep, es un comando usado en la línea de comando de sistemas Unix o basados en él (GNU/Linux, por ejemplo…), el cual toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular.

Normalmente lo usamos para hacer una clase de filtro dentro de un archivo de texto, pero también lo podemos hacer para el fin de ésta entrada. A continuación, la forma sencilla de ejecutarlo:

grep -r -i "palabra o frase" /home/oscard/

Lo que hará la línea de comando anterior, es buscar «palabra o frase» dentro de todos los archivos de texto dentro de /home/oscard/ de forma recursiva (en todos los directorios y subdirectorios).

A continuación, un ejemplo práctico… Se buscará dentro del código fuente de Redmine un fragmento html para identificar a dónde está la página maestra que usa la web app.

grep -r -i 'id="header"' /var/www/redmine

A continuación, nos devolverá el archivo donde se encuentra ese fragmento html; para el ejemplo, se utilizó la comilla simple para poder agregar comillas dobles adentro de la cadena de búsqueda.

Nos devuelve la ruta relativa donde se encuentra el archivo (en éste caso, base.html.erb) y nos muestra el contenido que estábamos buscando. Si hubieran más archivos, nos lo listaría de la misma forma.

Eso es todo amigos. Espero les sea de ayuda. ¡Saludos!


Comentarios por Facebook

comentarios