Cómo encontrar una cadena o palabra específica en archivos y directorios


¿Desea encontrar todos los archivos que contienen una palabra o cadena de texto en particular en todo su sistema Linux o en un directorio determinado? Este artículo lo guiará sobre cómo hacerlo, aprenderá cómo explorar directorios de forma recursiva para encontrar y listar todos los archivos que contienen una cadena de texto determinada.

Una forma sencilla de resolver esto es mediante el uso de la herramienta de búsqueda de patrones grep, es una utilidad de línea de comandos poderosa, eficiente, confiable y más popular para encontrar patrones y palabras de archivos o directorios en sistemas similares a Unix.

El siguiente comando mostrará una lista de todos los archivos que contienen una línea con el texto " check_root ", buscando de forma recursiva y agresiva el directorio ~/bin .

$ grep -Rw ~/bin/ -e 'check_root'

Donde la opción -R le dice a grep que lea todos los archivos debajo de cada directorio, recursivamente, siguiendo los enlaces simbólicos solo si están en la línea de comando y la opción -w le indica que seleccione solo las líneas que contienen coincidencias que forman palabras completas, y -e se utiliza para especificar la cadena (patrón) a buscar.

Debe usar el comando sudo cuando busque en determinados directorios o archivos que requieren permisos de root (a menos que esté administrando su sistema con la cuenta de root).

 
$ sudo grep -Rw / -e 'check_root'	

Para ignorar las distinciones de casos, utilice la opción -i como se muestra:

$ grep -Riw ~/bin/ -e 'check_root'

Si desea saber la línea exacta donde existe la cadena de texto, incluya la opción -n .

$ grep -Rinw ~/bin/ -e 'check_root'

Suponiendo que hay varios tipos de archivos en un directorio en el que desea buscar, también puede especificar el tipo de archivos que se buscarán, por su extensión, mediante la opción --include .

Este ejemplo le indica a grep que solo mire todos los archivos .sh .

$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

Además, es posible buscar más de un patrón, utilizando el siguiente comando.

$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

¡Eso es! Si conoce algún otro truco de la línea de comandos para encontrar cadenas o palabras en los archivos, comparta con nosotros o haga preguntas sobre este tema, utilice el formulario de comentarios a continuación.