grep

De forma predeterminada, la mayoría de las herramientas de búsqueda se centran en los nombres de los archivos, no en su contenido. Sin embargo, el programa de búsqueda de GNU más famoso, grep, mirará dentro de los archivos con los indicadores correctos. Aquí te mostraremos cómo puedes encontrar palabras específicas en un archivo en GNU/Linux.

De forma predeterminada, grep busca en el contenido de los archivos, así como en sus nombres. Está incluido en la mayoría de los sistemas GNU/Linux y es generalmente idéntico en todas las distribuciones. Dicho esto, las máquinas con GNU/Linux más pequeñas o menos potentes pueden preferir ejecutar un comando diferente, como ack.

Dependiendo de cómo esté codificado el archivo, es posible que grep no siempre pueda mirar dentro. Pero para la mayoría de los formatos basados en texto, grep puede escanear el texto del archivo en busca del patrón especificado.

grep -Rw '/ruta/' -e 'patrón'

El indicador -R establece grep en modo recursivo, navegando a través de todos los directorios contenidos dentro del directorio especificado. El indicador -w busca coincidencias de palabras completas. El indicador -e precede al patrón a buscar. Soporta expresiones regulares por defecto.

Para acelerar el proceso, puedes utilizar los indicadores –exclude y –include para limitar la búsqueda a ciertos tipos de archivos. Por ejemplo, –exclude=* .csv no buscará en ningún archivo con la extensión .csv. Por otro lado, –include=* .txt sólo buscará en archivos con la extensión .txt. El indicador se puede añadir inmediatamente después del comando grep, como se muestra a continuación:

grep --exclude=*.csv -Rw '/ruta' -e 'patrón'

También puedes excluir directorios específicos siguiendo el formato que se muestra a continuación:

grep --exclude-dir={dir1,dir2,*_antiguo} -Rw '/ruta/' -e 'patrón'

Este comando no buscará en ningún directorio del presente directorio de trabajo llamado dir1, dir2, o que coincida con el patrón *_antiguo, eliminándolos del proceso de búsqueda. Ejecutará la búsqueda recursiva y completa de coincidencias de palabras especificadas en todos los demás archivos del directorio de trabajo actual.

Uso de Find para buscar una palabra específica en un archivo

Aunque la sintaxis del comando find es más complicada que la de grep, algunos la prefieren.

find . -name "*.php" -exec grep "patrón de búsqueda" {} \;

Donde “nombre” es el objetivo a buscar. Este comando usará el indicador -exec para pasar los archivos encontrados a grep para la búsqueda. Con una disposición inteligente de la sintaxis, puedes utilizar la búsqueda más rápida en el sistema de archivos para localizar los tipos de archivos específicos en los que deseas buscar, y luego pasarlos a grep con el fin de buscar dentro de los archivos.

Ten en cuenta que find sólo busca en los nombres de archivo, no en el contenido. Es por eso que se requiere grep para buscar el texto y el contenido de los archivos. Los indicadores de grep normales deben ser totalmente operativos desde dentro del indicador -exec.

Uso de ack para buscar una palabra específica en un archivo

El comando ack es probablemente la herramienta de búsqueda más rápida, pero no es tan popular como las opciones anteriores. El siguiente comando buscará en el directorio actual.

ack 'patrón'

Si quieres buscar dentro de un archivo o directorio específico, puedes añadir ese archivo o nombre de ruta completo a tu búsqueda.

ack 'patrón' /ruta/archivo.txt

Para la mayoría de la gente en la mayoría de las situaciones, grep es la mejor herramienta de búsqueda disponible. También puedes consultar otras herramientas de búsqueda, como RipGrep, para obtener opciones de búsqueda más rápidas.

 

Fuente: maslinux

¿Quién está en línea?

Hay 11219 invitados y ningún miembro en línea