Como encontrar todos os arquivos com um texto específico usando linux shell

Como encontrar todos os arquivos com um texto específico usando linux shell

Objetivo

O artigo a seguir fornece algumas dicas úteis sobre como encontrar todos os arquivos em qualquer diretório específico ou sistema de arquivo inteiro que contenha qualquer palavra ou string específica.

Dificuldade

FÁCIL

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Exemplos

Encontre todos os arquivos com uma string específica não recursivamente

O primeiro exemplo de comando procurará uma string esticar Em todos os arquivos dentro /etc/ Diretório ao excluir quaisquer subdiretos:

# Grep -s Stretch/etc/*/etc/OS-RELEASE: pretty_name = "Debian GNU/Linux 9 (Stretch)"/etc/OS-RELEASE: Version = "9 (Stretch)" 

O -s A opção Grep suprimirá mensagens de erro sobre arquivos inexistentes ou ilegíveis. A saída mostra nomes de arquivos e imprime a linha real contendo string solicitada.



Encontre todos os arquivos com uma string específica recursivamente

O comando acima omitiu todos os subdiretos. Pesquisar recursivamente significa também atravessar todos os subdiretos. O seguinte comando linux procurará uma string esticar Em todos os arquivos dentro /etc/ Diretório, incluindo todos os subdiretos:

# grep -r alongamento/etc/*/etc/apt/fontes.Lista:# DEB CDROM: [Debian GNU/Linux Testing _Strech_-Instantâneo oficial AMD64 Netinst Binário-1 20170109-05: 56]/alongamento principal/etc/apt/fontes.Lista: #deb CDROM: [Debian GNU/Linux Testing _Strech_-Instantâneo oficial AMD64 Netinst Binário-1 20170109-05: 56]/alongamento principal/etc/apt/fontes.Lista: Deb http: // ftp.Au.Debian.Org/Debian/Stretch Main/etc/apt/fontes.Lista: Deb-Src http: // ftp.Au.Debian.Org/Debian/Stretch Main/etc/apt/fontes.Lista: Deb http: // segurança.Debian.Org/Debian-Security Stretch/Atualizações Main/etc/apt/fontes.Lista: Deb-Src http: // segurança.Debian.Org/Debian-Security Stretch/Atualizações Main/etc/Dictionaries-Common/Words: BackStrech/etc/Dictionaries- common/Palavras: BackStretch's/etc/Dictionaries-common/Palavras: BackStretches/etc/Dicties-Common/Words: Homestretch/ etc/dicionários-common/palavras: Homestretch's/etc/dicionários-common/palavras: Homestretches/etc/dicionários-common/palavras: Outstretch/etc/dictionaries-common/palavras: vendidos/etc/dictionaries-common/words: Outstretches/ etc/dicionários-common/palavras: estendendo-se/etc/dicionários-common/palavras: alongamento/etc/dicionários-common/palavras: alongamento/etc/dicionários-comcommon/palavras: alongados/etc/dicionários-common/palavras: maca/maca/ etc/dicionários-common/palavras: maca/etc/dicionários-common/palavras: macas/etc/dicionários-common/palavras: alongamentos/etc/dictionies-common/words: elicier/etc/dictionaries-common/palavras: etc/dicionários comuns/palavras:Alongamento/etc/dicionários comuns/palavras: elástico/etc/grub.d/00_header: Background_Image -M Stretch 'make_system_path_relative_to_its_root "$ GRUB_BACKGRONGRONG"/etc/OS-RELEASE: pretty_name = "Debian GNU/Linux 9 (Stretch)"/etc/OS-Release: Version = "9 (Stretch)" 


Pesquise todos os arquivos que contêm uma palavra específica

O de cima grep Exemplo de comando lista todos os arquivos que contêm string esticar. Significando as linhas com alongar, esticado etc. também são mostrados. Use Grep's -c opção para mostrar apenas uma palavra específica:

# grep -rw alongamento/etc/*/etc/apt/fontes.Lista:# DEB CDROM: [Debian GNU/Linux Testing _Strech_-Instantâneo oficial AMD64 Netinst Binário-1 20170109-05: 56]/alongamento principal/etc/apt/fontes.Lista: #deb CDROM: [Debian GNU/Linux Testing _Strech_-Instantâneo oficial AMD64 Netinst Binário-1 20170109-05: 56]/alongamento principal/etc/apt/fontes.Lista: Deb http: // ftp.Au.Debian.Org/Debian/Stretch Main/etc/apt/fontes.Lista: Deb-Src http: // ftp.Au.Debian.Org/Debian/Stretch Main/etc/apt/fontes.Lista: Deb http: // segurança.Debian.Org/Debian-Security Stretch/Atualizações Main/etc/apt/fontes.Lista: Deb-Src http: // segurança.Debian.Org/Debian-Security Stretch/Atualizações Main/etc/Dictionaries-Common/Words: Stretch/etc/Dictionaries-Common/Words: Stretch's/etc/grub.d/00_header: Background_Image -M Stretch 'make_system_path_relative_to_its_root "$ GRUB_BACKGRONGRONG"/etc/OS-RELEASE: pretty_name = "Debian GNU/Linux 9 (Stretch)"/etc/OS-Release: Version = "9 (Stretch)" 

Listar apenas os nomes de arquivos que contêm um texto específico

Os comandos acima podem produzir uma saída desnecessária. O próximo exemplo mostrará apenas todos os nomes de arquivos que contêm string esticar dentro de /etc/ diretório recursivamente:

# Grep -rl Stretch/etc/*/etc/apt/fontes.Lista/etc/dicionários common/words/etc/grub.D/00_HEADER/ETC/OS 

Execute a pesquisa insensível ao caso

Todas as pesquisas são, por padrão, sensíveis ao caso, o que significa que qualquer pesquisa por uma string esticar mostrará apenas arquivos que contêm a mancha exata e a correspondência minúscula. Usando o Grep's -eu Opção O comando também listará todas as linhas que contêm Esticar, ESTICAR, Esticar etc., Portanto, para realizar pesquisas insensíveis ao caso.

# Grep -Ril Stretch/etc/*/etc/apt/fontes.List/etc/dicionários common/padrão.hash/etc/dicionários comuns/palavras/etc/grub.D/00_HEADER/ETC/OS 


Inclua ou exclua nomes de arquivos específicos da pesquisa

Usando grep Comando também é possível incluir apenas arquivos específicos como parte da pesquisa. Por exemplo, só gostaríamos de procurar um texto/string específico dentro de arquivos de configuração com extensão .conf. O próximo exemplo encontrará todos os arquivos com extensão .conf dentro de /etc diretório que contém string Bash:

# Grep -Ril Bash /etc /*.conf ou # grep -ril --include = \*.conf bash /etc /* /etc /adduser.conf 

Da mesma forma, usando --excluir Opção, podemos excluir quaisquer nomes de arquivos específicos:

# grep -ril --exclude = \*.conf bash/etc/*/etc/alternativas/view/etc/alternativas/vim/etc/alternativas/vi/etc/alternativas/vimdiff/etc/alternativas/rvim/etc/alternativas/ex/etc/alternativas/rview/etc /BASH.Bashrc /etc /Bash_completion.d/grub/etc/cron.diariamente/apt-comp/etc/cron.diariamente/exIm4-BASE/etc/dicionários comuns/inadimpl.hash/etc/dicionários common/words/etc/inputrc/etc/passwd/etc/passwd-/etc/perfil/etc/shells/etc/skel/.perfil/etc/skel/.Bashrc/etc/skel/.Bash_logout 

Excluir diretórios específicos da pesquisa

O mesmo que com os arquivos Grep também pode excluir diretórios específicos da pesquisa. Usar --exclude-Dir opção para excluir o diretório da pesquisa. O exemplo de pesquisa a seguir encontrará todos os arquivos que contêm string esticar dentro de /etc diretório e exclusão /etc/grub.d De pesquisa:

# grep --exclude-dir =/etc/grub.d -rwl alongamento/etc/*/etc/apt/fontes.List/etc/dicionários common/words/etc/os-lançamento 

Exibir um número de linha contendo string pesquisada

Usando -n A opção Grep também fornecerá uma informação sobre um número de linha em que a string específica foi encontrada:

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

Encontre todos os arquivos que não contêm uma string específica

O último exemplo usará -v opção para listar todos os arquivos que não contêm uma palavra -chave específica. Por exemplo, a pesquisa a seguir listará todos os arquivos dentro /etc/ diretório que não contém string esticar:

# grep -rlv alongamento /etc /* 

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Comandos básicos do Linux
  • Como encontrar uma string ou texto em um arquivo no Linux
  • Como grep corretamente para texto em scripts de bash
  • Encontre todos os arquivos contendo texto específico
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como imprimir a árvore do diretório usando o Linux
  • Exemplos úteis de linha de comando Bash e truques - Parte 4
  • Exemplos úteis de linha de comando bash e exemplos de truques - Parte 1