Encontre arquivos contendo texto específico no Linux
O Linux, independentemente da distro que você usa, vem com uma série de ferramentas de GUI que permitem a pesquisa de arquivos. Muitos gerenciadores de arquivos modernos oferecem suporte à pesquisa de arquivos diretamente na lista de arquivos. No entanto, há várias situações em que você precisa usar o console, por exemplo, durante uma sessão SSH ou quando o servidor X não inicia. Aqui está como você pode encontrar arquivos contendo texto específico rapidamente usando o terminal.
Se você pode usar a GUI, a busca por arquivos não é um problema. No meu ambiente de trabalho XFCE favorito, o gerenciador de arquivos Thunar permite pesquisar arquivos digitando o nome do arquivo diretamente na lista de arquivos.
No entanto, nenhum dos gerenciadores de arquivos que experimentei permite a pesquisa de conteúdo de arquivos.
Para contornar essa limitação ao trabalhar em uma sessão de GUI, você pode usar o Сatfish. Сatfish é uma ferramenta de pesquisa popular. Permite pesquisar o conteúdo do arquivo. Você precisa clicar no ícone de engrenagem e habilitar a opção Pesquisar conteúdo do arquivo.
No entanto, quando se trata do terminal, você não pode usar nenhuma ferramenta gráfica. Além disso, acho que o Catfish não é útil e prefiro as ferramentas clássicas de console. Aqui estão os métodos e ferramentas que utilizo.
Para encontrar arquivos contendo texto específico no Linux, faça o seguinte.
- Abra seu aplicativo de terminal favorito. Terminal XFCE4 é minha preferência pessoal.
- Digite o seguinte comando:
encontre ./ -tipo f -exec grep -l "texto para localizar" {} \;
- Isso produzirá a lista de arquivos que contém a parte do texto necessária.
O comando find irá procurar por arquivos começando no diretório atual, "./". Você pode especificar o caminho desejado.
A opção -tipo f diz a ele para pesquisar apenas por arquivos e excluir diretórios. Além disso, você pode fazer com que ele pesquise apenas um determinado tipo de arquivo, adicionando a opção a seguir:encontre ./ -tipo f -iname "* .txt" -exec grep -l "texto para localizar" {} \;
Veja a seguinte captura de tela:
o -exec opção chama a ferramenta grep para cada um dos arquivos correspondentes para verificar seu conteúdo. Se o texto for encontrado no arquivo, seu nome será adicionado à saída, graças ao -l opção.
Alternativas
Existem alternativas para os métodos descritos acima. Em primeiro lugar, você pode usar apenas o grep ferramenta. Tente o seguinte comando:
grep -iRl "texto a ser encontrado" ./
- -i significa ignorar maiúsculas e minúsculas.
- -R significa processamento de arquivo recursivo.
- -l significa "mostrar o nome do arquivo, não o resultado em si".
Como você pode ver, este método é menos flexível do que o achar comando.
Comandante da meia-noite
Outro método que costumo usar é o Midnight Commander (mc), o aplicativo gerenciador de arquivos do console. Ao contrário de find ou grep, mc não está incluído por padrão em todas as distros Linux que experimentei. Você pode precisar instalá-lo sozinho.
Para encontrar arquivos contendo algum texto específico usando Midnight Commander, inicie o aplicativo e pressione a seguinte sequência no teclado:
Alt + Mudança + ?
Isso abrirá a caixa de diálogo de pesquisa.
Preencha a seção "Nome do arquivo:". Você pode especificar algo como "* .txt" para pesquisar seu texto apenas em arquivos de texto.
Agora, preencha o Contente: caixa. Digite o texto que os arquivos contêm e pressione a tecla Enter.
Ele encontrará todos os arquivos que correspondem aos critérios.
É isso.