
este grep
y ripgrep
Los comandos en Linux son utilidades poderosas Modo de búsqueda de texto dentro del archivo. Ofrecen una variedad de opciones para afinar su búsqueda y aumentar la eficiencia. En esta guía detallada aprenderemos a utilizar grep
y ripgrep
Ordenar a Encuentre archivos que contengan cadenas de texto específicas en su contenido.
Utilice grep para buscar archivos que contengan cadenas de texto específicas
grep
(Impresión global de expresión regular) es una utilidad de línea de comandos que busca un patrón en un archivo e imprime líneas coincidentes. Es una poderosa herramienta de procesamiento de textos ampliamente utilizada en los sistemas operativos Unix, incluido Linux.
grep
Admite expresiones regulares y puede realizar de manera flexible coincidencias de patrones complejos. Para más detalles grep
Consulte las siguientes pautas para el uso de comandos:
Ahora analicemos cómo utilizar grep
Comando para buscar archivos que contengan palabras o frases específicas en Linux.
1. Uso básico
Para buscar recursivamente un patrón de texto específico (incluidos enlaces simbólicos) y mostrar los números de línea donde coincide el patrón, use el siguiente comando:
grep -Rnw '/path/to/directory/' -e 'pattern'
-R
: Realiza una búsqueda recursiva, incluidos enlaces simbólicos.-n
: Muestra números de línea coincidentes.-w
: Coincide sólo con palabras completas.-e
: Especifique el patrón a buscar.
reemplazar /path/to/directory/
con el directorio que desea buscar, y 'pattern'
con el patrón de texto que buscas.
2. Incluya tipos de archivos específicos
Busque dentro de archivos con una extensión específica, p. .txt
y .md
archivo, uso --include
Opciones:
grep --include=\*.{txt,md} -Rnw '/path/to/directory/' -e 'pattern'
3. Excluir tipos de archivos específicos
Excluir archivos con extensiones de archivo específicas, p. .bak
y .tmp
archivo, uso --exclude
Opciones:
grep --exclude=\*.{bak,tmp} -Rnw '/path/to/directory/' -e 'pattern'
4. Excluir directorios específicos
Excluir ciertos directorios de las búsquedas, como node_modules
, .git
y directorios que comienzan con temp_
usar --exclude-dir
Opciones:
grep --exclude-dir={node_modules,.git,temp_*} -Rnw '/path/to/directory/' -e 'pattern'
5.Solo muestra el nombre del archivo.
Para mostrar sólo los nombres de los archivos que contienen el patrón (ordenados alfabéticamente), utilice -l
Combinación de opciones sort
:
grep -Rlnw '/path/to/directory/' -e 'pattern' | sort
6. Coincidencia inversa
Para mostrar líneas que no coinciden con el patrón, utilice -v
Opciones:
grep -Rnwv '/path/to/directory/' -e 'pattern'
7. Cuente el número de coincidencias.
Para mostrar el número de filas coincidentes para cada archivo, utilice -c
Opciones:
grep -Rnwc '/path/to/directory/' -e 'pattern'
Estos ejemplos demuestran opciones avanzadas adicionales para ajustar las búsquedas de texto. grep
en Linux.
ejemplo
Algunos de los siguientes comandos deben ejecutarse junto con sudo
o root
privilegio.
1. Busque la cadena «contraseña» en todos los archivos del directorio actual:
grep -Rnw '.' -e 'password'
2. Busque «usuario» sin distinguir entre mayúsculas y minúsculas /etc
Tabla de contenido:
grep -Rinw '/etc' -e 'user'
3. Busque «principal» en el cuadro de búsqueda. /home/user/projects
Tabla de contenido:
grep -Rnw '/home/user/projects' -e 'main'
4.Busque «TODO» en todos .py
Archivos en el directorio actual:
grep --include=\*.py -Rnw '.' -e 'TODO'
5. Exclusión .log
Al buscar documentos «confidenciales» /var/logs
Tabla de contenido:
grep --exclude=\*.log -Rnw '/var/logs' -e 'confidential'
6. Busque «error» y muestre solo los nombres de los archivos. /var/log
Tabla de contenido:
grep -Rlnw '/var/log' -e 'error'
7. Busque «fallar» en el archivo (p. ej. backup.zip
):
zgrep -i 'fail' backup.zip
8. Cuente el número de líneas que contienen la palabra «error». /var/log
Tabla de contenido
grep -Rnwc '/var/log' -e 'error'
Estos comandos y opciones deberían satisfacer la mayoría de las necesidades de búsqueda de texto en un entorno Linux.
Utilice ripgrep para buscar patrones de texto en archivos en Linux
ripgrep
(rg
) es una alternativa moderna grep
Está diseñado para ser más rápido y fácil de usar, especialmente cuando se buscan en bibliotecas de códigos o archivos grandes.
esta escrito en óxido Y utiliza técnicas eficientes como autómatas finitos, SIMD y optimización de texto agresiva, lo que la hace mucho más rápida que muchas otras herramientas de búsqueda.
ripgrep
También proporciona resultados más intuitivos y coloridos de forma predeterminada y tiene un amplio conjunto de opciones para personalizar el comportamiento de búsqueda.
Uso básico
Para buscar en el directorio actual la cadena «función»:
rg "search_string" .
Parámetros comunes
-i
: realice una búsqueda que no distinga entre mayúsculas y minúsculas.-I
: Ignora los archivos binarios.-w
: busca sólo la palabra completa.-n
: Muestra números de línea coincidentes.-C
o--context
: muestra el contexto alrededor de las líneas coincidentes (p. ej.,-C3
Muestra 3 líneas antes y después del juego).--color=auto
: resalta el texto coincidente.-H
: muestra el nombre del archivo del texto encontrado.-c
: Muestra el número de líneas coincidentes (se puede utilizar con-H
).
ejemplo
1. Busque «error» sin distinguir entre mayúsculas y minúsculas /var/log/
Tabla de contenido:
rg -i "error" /var/log/
2. Busque la palabra completa «base de datos» en el cuadro de búsqueda. /home/user/config
Tabla de contenido:
rg -w "database" /home/user/config
3. Muestre el número de línea y el contexto circundante de la cadena «inicializar» en el directorio actual (3 líneas antes y después):
rg -n -C3 "initialize" .
4. Busque la cadena «obsoleta» en todos los archivos del directorio. /var/www/html
Directorio, ignorando archivos binarios y resaltando coincidencias:
rg -I --color=auto "deprecated" /var/www/html
5. Muestre el nombre del archivo y el número de línea coincidente en «Éxito» /opt/data
Tabla de contenido:
rg -H -c "successful" /opt/data
6. Busque «user_id» mientras ignora los archivos binarios y muestra el nombre del archivo en el archivo. /etc
Tabla de contenido:
rg -I -H "user_id" /etc
7. Busque la cadena «conexión» y muestre el nombre del archivo y el número de línea. /home/user/logs
Tabla de contenido:
rg -H -n "connection" /home/user/logs
Estos ejemplos demuestran su versatilidad y potencia. ripgrep
Adecuado para diversos escenarios de búsqueda, especialmente proyectos grandes y archivos grandes.
Preguntas frecuentes: busque texto en un archivo usando grep
y ripgrep
1. Cómo utilizar el siguiente comando para buscar todos los archivos que contienen una cadena de texto específica en el contenido grep
?
Para buscar una cadena específica en todos los archivos de un directorio y sus subdirectorios, utilice el siguiente comando:
grep -Rnw '/path/to/dir/' -e 'pattern'
-R
: Realiza una búsqueda recursiva, incluidos enlaces simbólicos.-n
: Muestra números de línea coincidentes.-w
: Coincide sólo con palabras completas.-e
: Especifique el patrón a buscar.
2. Cómo incluir o excluir ciertos tipos de archivos en mis archivos grep
¿buscar?
Para incluir tipos de archivos específicos:
grep --include=\*.{sh,py} -Rnw '/path/to/dir/' -e 'pattern'
Para excluir tipos de archivos específicos:
grep --exclude=\*.tmp -Rnw '/path/to/dir/' -e 'pattern'
3. Cómo excluir ciertos directorios de mi directorio grep
¿buscar?
Para excluir directorios específicos:
grep --exclude-dir={node_modules,dist,logs} -Rnw '/path/to/dir/' -e 'pattern'
4. Cómo mostrar solo nombres de archivos que contienen cadenas específicas grep
?
usar -l
Opción de mostrar solo nombres que coincidan con el perfil:
grep -Rlnw '/path/to/documents/' -e 'confidential'
5. ¿Qué es? ripgrep
¿Por qué debería usarlo?
ripgrep
(rg
) es una alternativa más rápida y eficiente grep
, especialmente para proyectos grandes y archivos grandes. Está construido sobre el motor de expresiones regulares de Rust, que utiliza autómatas finitos, SIMD y una optimización literal agresiva para mejorar la velocidad de búsqueda.
6. Cómo utilizar ripgrep
?
Para buscar una cadena en todos los archivos del directorio actual:
rg "pattern" .
7. ¿Cuáles son los comunes? ripgrep
¿parámetro?
-i
: realice una búsqueda que no distinga entre mayúsculas y minúsculas.-I
: Ignora los archivos binarios.-w
: busca sólo la palabra completa.-n
: Muestra números de línea coincidentes.-C
o--context
: muestra el contexto alrededor de las líneas coincidentes (p. ej.,-C3
Muestra 3 líneas antes y después del juego).--color=auto
: resalta el texto coincidente.-H
: muestra el nombre del archivo del texto encontrado.-c
: Muestra el número de líneas coincidentes (se puede utilizar con-H
).
8. ¿Puede proporcionarnos ejemplos de uso? ripgrep
¿Hay diferentes opciones?
- Busque «sesión» sin distinguir entre mayúsculas y minúsculas
/var/logs
Tabla de contenido:
rg -i "session" /var/logs
- Busque la palabra completa «config»
/etc
Tabla de contenido:
rg -w "config" /etc
- Muestra el número de línea y el contexto circundante de la cadena «inicializar» (4 líneas antes y después)
/src
Tabla de contenido:
rg -n -C4 "initialize" /src
- Busque en todos los archivos de este directorio la cadena «obsoleta»
/usr/share
Directorio, ignorando archivos binarios y resaltando coincidencias:
rg -I --color=auto "deprecated" /usr/share
- Muestra el nombre del archivo comprimido y el número de líneas coincidentes para «éxito»
/opt/logs
Tabla de contenido:
rg -H -c "success" /opt/logs
- Busque «nombre de usuario» mientras ignora los archivos binarios y muestra los nombres de los archivos en
/home/user/settings
Tabla de contenido:
rg -I -H "username" /home/user/settings
- Busque la cadena «importar» y muestre el nombre del archivo y el número de línea
/projects
Tabla de contenido:
rg -H -n "import" /projects
en conclusión
En este tutorial discutimos cómo usar grep
y ripgrep
Comando para buscar archivos que contengan cadenas de texto específicas en su contenido.
a pesar de grep
Es una herramienta completa y multifuncional, ripgrep
(rg
) ofrece un rendimiento mejorado y una experiencia de usuario más moderna, lo que lo convierte en una opción popular para búsquedas de texto, especialmente en proyectos grandes o cuando se trabaja con archivos grandes.
Lectura relacionada: