Búsqueda de sitios web

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


¿Quiere 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 buscar recursivamente en directorios para encontrar y enumerar 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, una utilidad de línea de comandos potente, eficiente, confiable y muy popular para buscar patrones y palabras de archivos o directorios en sistemas tipo Unix.

Lea también: 11 comandos avanzados 'Grep' de Linux sobre clases de caracteres y expresiones entre corchetes

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

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

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

Debe utilizar el comando sudo cuando busque ciertos directorios o archivos que requieran 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 ejemplo, por su extensión usando la opción --include.

Este ejemplo le indica a grep que solo revise 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 todo! Si conoce algún otro truco de línea de comandos para buscar cadenas o palabras en archivos, compártalo con nosotros o haga cualquier pregunta sobre este tema, utilice el formulario de comentarios a continuación.