A utilização da pesquisa de ficheiros por conteúdo no Linux pode reduzir significativamente o tempo e o esforço na procura de informações específicas em sistemas de ficheiros grandes e complexos.
Por que é necessário pesquisar ficheiros por conteúdo
Esta pesquisa pode ser particularmente útil quando se pretende encontrar ficheiros que contenham uma determinada cadeia de caracteres ou palavra-chave, ou quando se pretende encontrar todos os ficheiros que correspondam a um determinado padrão ou critério.
A pesquisa de ficheiros por conteúdo pode ser utilizada para várias tarefas, tais como encontrar
- texto específico em grandes ficheiros de texto
- ficheiros de configuração e scripts que contenham determinadas definições ou comandos
- ficheiros que contenham dados específicos, tais como nomes de utilizadores ou números de telefone
- ficheiros por tipo de conteúdo, como encontrar todos os ficheiros que contenham imagens JPEG ou documentos PDF.
O objetivo geral da pesquisa de ficheiros por conteúdo é facilitar o trabalho com o sistema de ficheiros e encontrar as informações necessárias no sistema de ficheiros.
ack
Vamos começar com o utilitário ack. Foi criado em 2005 como uma alternativa ao grep e rapidamente se tornou popular entre os programadores.
Ele tem várias vantagens sobre o grep, incluindo:
- pesquisas mais inteligentes de arquivos e exceções. Por defeito, o ack só procura em ficheiros que possam fazer sentido, por exemplo, excluindo pastas .svn ou .git. E você pode adicionar suas próprias regras e exceções;
- O Ack pesquisa arquivos e diretórios ocultos por padrão;
- O Ack não tenta procurar em todo o lado, mesmo nas pastas do sistema, como
o grep. Isto significa que pode facilmente encontrar ficheiros escondidos no seu sistema.
Exemplos de como usar o ack:
- Encontrar todos os ficheiros na pasta atual e nas suas subpastas que contenham a palavra
"teste": ack "teste"- A mesma coisa, mas excluindo ficheiros com extensão
.bak: ack "teste" --ignore-file=match:/.bak$/- Encontrar todos os ficheiros na pasta atual que contenham a string "hello" e produzir as primeiras 2 linhas de cada ficheiro:
ack "hello" --heading --max-count=2
ripgrep
A segunda ferramenta interessante é o ripgrep. É semelhante ao ack em muitos aspectos, mas usa um algoritmo de pesquisa mais rápido, o que o torna especialmente útil para grandes projectos.
Aqui estão alguns exemplos:
- Encontrar todos os ficheiros na pasta atual e nas suas subpastas que contenham a palavra
"teste": rg "teste" - O mesmo, mas excluindo ficheiros com extensão
.bak: rg "teste" --glob "!*.bak" - Encontrar todos os ficheiros na pasta atual que contenham a string "hello" e mostrar as primeiras 2 linhas de cada ficheiro:
rg "hello" --heading --max-columns=2
No final, vale a pena mencionar o fzf. Não é apenas um localizador de strings como o ack e o ripgrep. O fzf é usado como um utilitário para encontrar ficheiros, pastas e itens numa lista. Caso contrário, funciona de forma semelhante ao ack/ripgrep, mas com a capacidade adicional de filtrar os resultados em tempo real. Aqui estão alguns exemplos:
- Procurar por ficheiros que comecem com a letra F no seu computador:
locate F | fzf -m- Sair da pasta atual e ir para a diretoria que pretendo:
cd **<TAB> | fzf- Selecionar a revisão SVN e copiar o número para a área de transferência:
svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy
Esperamos que estas ferramentas o ajudem a encontrar os ficheiros e strings de que necessita de forma rápida e eficiente. Qualquer que seja a sua escolha, todas elas oferecem pesquisas avançadas que podem acelerar consideravelmente o seu trabalho.



