viernes, 25 de junio de 2010

La Consola mi Ide - Busqueda en Archivos/Carpetas - Comando grep

Toda operación, por lo general, comienza con una búsqueda de un código existente o en nombres de archivos, esto es bien logrado por el comando 'grep', el cual tiene muchas opciones pero vamos a ver las mas comunes

-c En lugar de imprimir las líneas que coinciden, muestra el número de líneas que coinciden.
-r busca recursivamente dentro de todos los subdirectorios del directorio actual.
-v nos muestra las líneas que no coinciden con el patrón buscado.
-i ignora la distinción entre mayúsculas y minúsculas.
-n Numera las líneas en la salida.
-E nos permite usar expresiones regulares. Equivalente a usar egrep.
-o le indica a grep que nos muestre sólo la parte de la línea que coincide con el patrón.
-H nos imprime el nombre del archivo con cada coincidencia.

Ejemplos comunes:

Para buscar la palabra "texto" en toda la carpeta documentos y como tiene el "-r" va a continuar la busqueda recursivamente a las carpetas que contenga adentro. Si lo que buscamos tiene mas de una palabra deberemos poner lo que buscamos entre comillas:
grep -r texto /home/chiquita/Documentos/*
grep -r "texto y algo mas" /home/chiquita/Documentos/* 
Nota: como vemos de analizar estas busquedas, se estan realizando teniendo en cuenta las mayusculas y minusculas, osea si estubiese escrito "Texto y Algo Mas"  no ubiese sido detectado por estos sentencias. Lo que podriamos hacer seria agrearle la opcion "i" ( ver mas arriba ) quedando la parte de opciones como "-ri". Pero no conforme con eso, si nosotros además quieramos saber, por ejemplo en qué linea del archivo esta esa coincidencia, deberiamos de agregarle la opcion "n" ( ver mas arriba ). Esto es algo muy útil al momento de codificar. La sentencia sería:
grep -rin "texto y algo mas" /home/chiquita/Documentos/*  
En el caso que nosotros estemos parados en la carpeta, basta solamente poner el "*"  solamente, ya que intentamos referirnos a la carpeta actual.

grep -rin "texto y algo mas" /home/chiquita/Documentos/*
Esta es una sentencia bastante completa, seguro que mientras mas opciones o mas cosas que hagan la búsqueda mas pesada, mas va a tardar, pero justamente lo que nos da la consola es la posibilidad de poder ajustar los parámetros acorde a nuestra búsqueda, con ello, podemos ajustarla a nuestras necesidades.

grep -rin "texto y algo mas" *

Esto es solo una introduccion, el mundo del grep, es un mundo en si mismo el cual es muy completo como la mayoria de los comandos de consola de Linux.

No hay comentarios: