lunes, 15 de noviembre de 2010

Encontrar archivos que contengan un texto determinado. (Linux).










Alguna vez podemos necesitar encontrar los archivos que contengan un texto determinado. Por ejemplo, si tenemos muchos archivos de iptables y queremos buscar aquellos que contengan una dirección IP determinada. O si queremos saber en que archivos se encuentra la palabra "Linux", por ejemplo. A continuación explico como hacerlo:

El comando grep.

La instrucción que vamos a utilizar es "grep". La sintaxis es la siguiente:

grep “text string to search” directory-path

Ejemplo:

Si queremos saber qué archivos del directorio /home/felipe/prueba/ contienen la palabra "Hola" :

grep "Hola" /home/felipe/prueba/*.*

Salida:

/home/felipe/prueba/archivo1.txt:Hola Juan

/home/felipe/prueba/archivo2.txt:Hola Pepe



El comando grep recursivo.


Para que busque en el directorio actual y sus subdirectorios, debemos añadir la opción -r :

Ejemplo:

grep -r "Hola" /home/felipe/prueba/

Salida:

/home/felipe/prueba/archivo2.txt:Hola Pepe

/home/felipe/prueba/archivo1.txt:Hola Juan. 

/home/felipe/prueba/pruebaprueba/archivo4.txt:Hola Manuel



El comando grep -l


Con la opción -l nos aparecerá solo el nombre del archivo:

Ejemplo:

grep -l "Hola" /home/felipe/prueba/*.*

Salida:

/home/felipe/prueba/archivo1.txt

/home/felipe/prueba/archivo2.txt


Espero que sea utilidad.




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO