Cómo encontrar una palabra específica en un archivo en Linux

De manera predeterminada, la mayoría de las herramientas de búsqueda miran los nombres de los archivos, no el contenido de los archivos. Sin embargo, el programa de búsqueda GNU más famoso, grep, buscará dentro de los archivos con las banderas correctas. Aquí le mostraremos cómo puede encontrar palabras específicas en un archivo en Linux.

Usando grep para encontrar una palabra específica en un archivo

Buscar texto en archivo Linux Grep

De forma predeterminada, grep busca en el contenido de los archivos, así como en sus nombres de archivo. Se incluye en la mayoría de los sistemas Linux y generalmente es idéntico en todas las distribuciones. Dicho esto, las cajas de Linux más pequeñas o menos poderosas 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 '/path/to/search/' -e 'pattern'

los -R flag establece grep en modo recursivo, navegando a través de todos los directorios contenidos dentro del directorio especificado. los -w la bandera busca coincidencias de palabras completas. Esto significa que ‘rojo’ coincidirá solo con ‘rojo’ rodeado de espacios en blanco y no con ‘redundante’ o ‘cansado’. los -e la bandera precede al patrón a buscar. Admite expresiones regulares de forma predeterminada.

Para acelerar grep, puede usar el --exclude y --include banderas para limitar la búsqueda a ciertos tipos de archivos. Por ejemplo, --exclude=*.csv no buscará dentro de ningún archivo con la extensión .csv. --include=*.txt, por otro lado, solo buscará dentro de los archivos con la extensión .txt. El indicador se puede agregar inmediatamente después del comando grep, como se muestra a continuación:

grep --exclude=*.csv -Rw '/path/to/search' -e 'pattern'

También puede excluir directorios específicos siguiendo el siguiente formato:

grep --exclude-dir={dir1,dir2,*_old} -Rw '/path/to/search' -e 'pattern'

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

Usar find para encontrar una palabra específica en un archivo

Buscar texto en archivo Linux Buscar Grep

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

find . -name "*.php" -exec grep "pattern" {} \;

Este comando usará find’s -exec marca para pasar los archivos encontrados a grep para buscar. Con una disposición inteligente de la sintaxis, puede usar la búsqueda más rápida del sistema de archivos de find para ubicar los tipos de archivos específicos en los que desea buscar y luego canalizarlos a grep para buscar dentro de los archivos.

Tenga en cuenta que find solo mira los nombres de los archivos, no los contenidos. Es por eso que se requiere grep para buscar el texto y el contenido del archivo. Las banderas grep normales deben estar completamente operativas desde dentro del -exec bandera.

Usando ack para encontrar 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á dentro del directorio actual.

Si desea buscar dentro de un archivo o directorio específico, puede agregar ese archivo o nombre de ruta completo a su búsqueda.

ack 'pattern' /path/to/file.txt

Conclusión

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

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *