Cómo encontrar todos los archivos con un texto específico usando Linux Shell

Cómo encontrar todos los archivos con un texto específico usando Linux Shell

Objetivo

El siguiente artículo proporciona algunos consejos útiles sobre cómo encontrar todos los archivos dentro de cualquier directorio específico o sistema de archivos completo que contenga cualquier palabra o cadena específica.

Dificultad

FÁCIL

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Ejemplos

Encuentre todos los archivos con una cadena específica de no recursión

El primer ejemplo de comando buscará una cadena estirar En todos los archivos dentro /etc/ directorio al tiempo que excluye cualquier subdirectorios:

# grep -s estiramiento/etc/*/etc/os-release: bittle_name = "debian gnu/linux 9 (estiramiento)"/etc/os-release: versión = "9 (estiramiento)" 

El -s La opción GREP suprimirá los mensajes de error sobre archivos inexistentes o inexistentes. La salida muestra nombres de archivo, así como imprime la línea real que contiene una cadena solicitada.



Encuentre todos los archivos con una cadena específica recursivamente

El comando anterior omitió todos los subdirectorios. Buscar recursivamente significa también atravesar todos los subdirectorios. El siguiente comando Linux buscará una cadena estirar En todos los archivos dentro /etc/ Directorio que incluye todos los subdirectorios:

# grep -r estiramiento/etc/*/etc/apt/fuentes.Lista:# Deb Cdrom: [Pruebas de Debian Gnu/Linux _stretch_-Snapshot oficial AMD64 Netinst Binary-1 20170109-05: 56]/estirado Main/etc/apt/fuentes.Lista: #Deb Cdrom: [Pruebas de Gnu/Linux de Debian _stretch_-Instantánea oficial AMD64 Netinst Binary-1 20170109-05: 56]/STRING MAIN/ETC/APT/FUENTES.Lista: Deb http: // ftp.au.debian.org/debian/estiramiento main/etc/apt/fuentes.Lista: Deb-Src http: // ftp.au.debian.org/debian/estiramiento main/etc/apt/fuentes.Lista: Deb http: // Seguridad.debian.Org/Debian-Security STRING/ACTUALIZACIONES MAIN/ETC/APT/FUENTES.Lista: Deb-Src http: // Security.debian.Org/Debian-Security STRING/ACTUALIZACIONES MAIN/ETC/DICCIONARIOS COMMON/PALABRAS: BackStretch/etc/Dictionaries-Common/Words: BackStretch's/etc/Dictionaries-Common/Words: BackStretches/etc/diccionarios-Common/Palabras: Homestretch/ etc/diccionarios-comunes/palabras: Homestretch's/etc/diccionarios-comunes/palabras: homestretches/etc/diccionarios-common/palabras: outStetch/etc/diccionarios-comunes/palabras: OutStretched/etc/diccionarios-Common/Palabras: Extretches/Extretches/ etc/diccionarios-comunes/palabras: extirpado/etc/diccionarios-comunes/palabras: estiramiento/etc/diccionarios-comunes/palabras: estiramiento/etc/diccionarios-comunes/palabras: estirado/etc/diccionarios-comunes/palabras: camioneta/ etc/diccionarios-comunes/palabras: camilla/etc/diccionarios-comunes/palabras: camillas/etc/diccionarios-comunes/palabras: estiramientos/etc/diccionarios-comunes/palabras: estiramiento/etc/diccionarios-comunes/palabras: más elástico/más elástico/estiramiento/ etc/diccionarios comunes/palabras:estiramiento/etc/diccionarios comunes/palabras: elástico/etc/grub.d/00_header: background_image -m estiramiento 'make_system_path_relative_to_its_root "$ grub_background"'/etc/os-release: bittle_name = "debian gnu/linux 9 (estiramiento)"/etc/os-release: versión = "9 (estiramiento)" 


Buscar todos los archivos que contienen una palabra específica

Lo anterior grep Ejemplo de comando enumera todos los archivos que contienen cadena estirar. Que significa las líneas con estiramientos, estirado etc. también se muestran. Usa GREP's -w opción para mostrar solo una palabra específica:

# grep -rw estiramiento/etc/*/etc/apt/fuentes.Lista:# Deb Cdrom: [Pruebas de Debian Gnu/Linux _stretch_-Snapshot oficial AMD64 Netinst Binary-1 20170109-05: 56]/estirado Main/etc/apt/fuentes.Lista: #Deb Cdrom: [Pruebas de Gnu/Linux de Debian _stretch_-Instantánea oficial AMD64 Netinst Binary-1 20170109-05: 56]/STRING MAIN/ETC/APT/FUENTES.Lista: Deb http: // ftp.au.debian.org/debian/estiramiento main/etc/apt/fuentes.Lista: Deb-Src http: // ftp.au.debian.org/debian/estiramiento main/etc/apt/fuentes.Lista: Deb http: // Seguridad.debian.Org/Debian-Security STRING/ACTUALIZACIONES MAIN/ETC/APT/FUENTES.Lista: Deb-Src http: // Security.debian.Org/Debian-Security STRING/ACTUALIZACIONES MAIN/ETC/DICCIONARIOS COMMON/PALABRAS: estiramiento/etc/diccionarios-comunes/palabras: estiramiento/etc/grub/grub.d/00_header: background_image -m estiramiento 'make_system_path_relative_to_its_root "$ grub_background"'/etc/os-release: bittle_name = "debian gnu/linux 9 (estiramiento)"/etc/os-release: versión = "9 (estiramiento)" 

Enumere solo los nombres de archivos que contienen un texto específico

Los comandos anteriores pueden producir una salida innecesaria. El siguiente ejemplo solo mostrará todos los nombres de archivo que contienen cadena estirar dentro /etc/ directorio recursivamente:

# grep -rl estiramiento/etc/*/etc/apt/fuentes.Lista/etc/diccionarios comunes/palabras/etc/grub.D/00_HEADER/ETC/OS-LAGE 

Realizar una búsqueda insensible

Todas las búsquedas son de caso por defecto sensibles, lo que significa que cualquier búsqueda de una cadena estirar solo mostrará archivos que contienen la coincidencia de mayúsculas y minúsculas exactos. Usando GREP's -i opción El comando también enumerará cualquier línea que contenga Estirar, ESTIRAR, Estirar etc., Por lo tanto, para realizar una búsqueda insensible.

# grep -ril estirado/etc/*/etc/apt/fuentes.Lista/etc/diccionarios-comunes/predeterminado.hash/etc/diccionarios-comunes/palabras/etc/grub.D/00_HEADER/ETC/OS-LAGE 


Incluir o excluir nombres de archivos específicos de la búsqueda

Usando grep comando también es posible incluir solo archivos específicos como parte de la búsqueda. Por ejemplo, solo nos gustaría buscar un texto/cadena específico dentro de los archivos de configuración con extensión .confusión. El siguiente ejemplo encontrará todos los archivos con extensión .confusión dentro /etc directorio que contiene cadena intento:

# Grep -ril Bash /etc /*.conf o # grep -ril --include = \*.Conf Bash /etc /* /etc /adduser.confusión 

Del mismo modo, usando --excluir Opción Podemos excluir cualquier nombre de archivo específico:

# grep -ril --exclude = \*.conf base/etc/*/etc/alternativas/ver/etc/alternativas/vim/etc/alternativas/vi/etc/alternativas/vimdiff/etc/alternativas/rvim/etc/alternativas/ex/etc/alternativas/rview/etc /intento.bashrc /etc /bash_completion.d/grub/etc/cron.diario/apt-compat/etc/cron.diario/exim4-base/etc/diccionarios-comunes/predeterminado.hash/etc/diccionarios-comunes/palabras/etc/inputrc/etc/passwd/etc/passwd-/etc/perfil/etc/shells/etc/skel/.perfil/etc/skel/.bashrc/etc/skel/.bash_logout 

Excluir directorios específicos de la búsqueda

Lo mismo que con los archivos GREP también puede excluir directorios específicos de la búsqueda. Usar --Excluir-Dir opción para excluir el directorio de la búsqueda. El siguiente ejemplo de búsqueda encontrará todos los archivos que contienen cadena estirar dentro /etc directorio y excluir /etc/comida.d De la búsqueda:

# grep --exclude-diir =/etc/grub.D -rwl estiramiento/etc/*/etc/apt/fuentes.Lista/etc/diccionarios-comunes/palabras/etc/oso 

Muestra un número de línea que contiene cadena buscada

Mediante el uso -norte Opción GREP también proporcionará una información sobre un número de línea donde se encontró la cadena específica:

# Grep -rni Bash /etc /*.conf /etc /adduser.conf: 6: dshell =/bin/bash 

Encuentre todos los archivos que no contienen una cadena específica

El último ejemplo usará -V Opción para enumerar todos los archivos que no contienen una palabra clave específica. Por ejemplo, la siguiente búsqueda enumerará todos los archivos dentro /etc/ directorio que no contiene cadena estirar:

# grep -rlv estiramiento /etc /* 

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Comandos básicos de Linux
  • Cómo encontrar una cadena o texto en un archivo en Linux
  • Cómo Grep Correntemente para el texto en scripts bash
  • Encuentre todos los archivos que contienen texto específico
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo imprimir el árbol de directorio usando Linux
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1