Como procurar por strings dentro de arquivos em uma pasta?

98

Existe algum utilitário para fazer pesquisas por uma cadeia de caracteres nos arquivos ASCII para evitar pesquisas na linha de comando?

Como fazer uma pesquisa na linha de comando, por exemplo, para a string "test" dentro de todos os arquivos no diretório /var/x/?

Nuno
fonte
15
Você realmente quer dizer sem usar a linha de comando? Porque a melhor ferramenta para o que resta grep ...
alci
Na CLI O Silver Searcher provavelmente faz um trabalho melhor.
Pablo A

Respostas:

78

Você pode usar searchmonkey. A ferramenta está disponível nos repositórios, para que você possa simplesmente

sudo apt-get install searchmonkey

Por outro lado, a pesquisa de linha de comando com grep é realmente destinada a isso ...

Aqui está uma captura de tela do searchmonkey

insira a descrição da imagem aqui

alci
fonte
travou devido a muita carga :(
WiredEm
1
Eu tive problemas com o searchmonkey. Ele não é confiável no sentido de que ele permite que deslizamentos muitas ocorrências
gil tony
como executo "searchmonkey" na GUI? depois de instalado usando a linha de comando, eu prefiro não usar a linha de comando
Echeban
153

Suponho que sua primeira pergunta seja sobre uma alternativa da GUI ao grepcomando. Não posso ajudá-lo com isso, sempre acho a linha de comando muito eficaz.

Quanto à linha de comando, tente

grep "test" /var/x/*

Se você deseja pesquisar recursivamente (ou seja, não apenas em /var/x/, mas também em seus subdiretórios), faça

grep -R "test" /var/x/

Para evitar grepping os arquivos que o grep considera binários, use a -Iopção:

grep -I "test" /var/x/

Se o grep considerar que um arquivo é binário (com base nos primeiros bytes do arquivo), ele assumirá que não corresponde, em vez de passar pelo arquivo inteiro.

janeiro
fonte
1
Funcionará se a pasta contiver alguns arquivos não-ascii?
Anwar
1
Bem, grep também irá tentar procurar a string em um arquivo binário, e relatá-lo se ele corresponde a:Binary file file.jpg matches
janeiro
1
@ Janeiro Quando um arquivo binário é lido como texto, geralmente possui "linhas" extremamente longas (porque um caractere ou sequência de caracteres que seria interpretado para designar o final de uma linha pode não aparecer por muito tempo ou nunca). Dependendo da maneira como um utilitário de pesquisa de texto é implementado, isso pode causar problemas de desempenho se cada "linha" for lida totalmente na memória e depois verificada para corresponder à cadeia de pesquisa (que é uma maneira razoável grepde ser codificada, embora eu não sei se o Ubuntu grepestá escrito dessa maneira).
Eliah Kagan
1
"-i grep" para o caso de busca insensível
Czarek Tomczak
3
Deve haver uma *barra após a barra final no caminho, ou o grep não parece fazer nenhum trabalho em 14.04
DavidScherer 19/16
20

Você pode usar o regexxer . É uma ótima ferramenta de pesquisa / substituição de GUI para expressões regulares.

você pode baixar por:

sudo apt-get install regexxer

insira a descrição da imagem aqui

Seth
fonte
é super rápido, mas os problemas que tenho com este aplicativo são: 1. ele não tem um modo somente leitura, por isso não substituo ou excluo acidentalmente nada 2. ele mostra o texto, mas não muda para o específico linha que o padrão correspondeu. (I deslocado cerca de 2000 linhas de código para encontrar o que eu estava depois depois de mudar a cor para vermelho brilhante!)
Mehrad Mahmoudian
6

Tente Recoll, a melhor GUI que já usei. Para instalar a lembrança em todas as versões atualmente suportadas do Ubuntu, abra o terminal e digite:

sudo apt install recoll

É necessário algum tempo para indexar os arquivos primeiro (você pode definir o caminho da lista negra ou extensões ou mímica).

user244846
fonte
Posso confirmar que Recoll é outro mundo em relação a gnome-search-toolou search-monkey. Ele usa Xapian, por isso é capaz de inspecionar e documentos índice de palavra (ambos .doc e .docx), arquivos PDF, pastas de email, etc.
Avio
Ele está disponível através do deb empacotamento ( sudo apt install recoll) e faz seu trabalho onde até o grep falha, por exemplo, com documentos .docx compactados com a compressão pkzip.
Avio 22/03
note que recollrequer a construção do índice primeiro.
Yrogirg 18/09
5

Você pode usar o grepcomando do terminal:

grep -r string *

Este comando encontrará todas as ocorrências de "string" em todos os arquivos no diretório (ou subdiretórios) atual.

Para arquivos ocultos, você pode usar:

grep -r string ..

inquisitivo
fonte
2

Infelizmente, o grep faz um trabalho muito ruim na pesquisa de arquivos do Word (.doc), mas você pode canalizar a saída do catdoc para o grep. Não sou programador, mas esse pequeno script funciona bem para mim:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Todas as melhorias e sugestões são bem-vindas!

Ralph
fonte
1
Esta pergunta era sobre aplicativos gráficos e arquivos de texto sem formatação. Não sei o que grepe .doctenho a ver com a pergunta.
Andrea Corbellini
Parece OK, consulte a resposta detalhada de janeiro sobre grep.
precisa saber é
2

Acabei de lançar uma ferramenta simples para fazer o trabalho. Pensado principalmente para desenvolvedores de software, possui a característica (única?) De abrir vários arquivos na mesma janela. Apresenta os resultados no navegador usando o editor Ace (recomendado!) Ou a área de texto html. É uma ferramenta baseada em java, por isso é executada no Windows e no Linux.

Confira!

https://sourceforge.net/projects/queacetu.gastona.p/

Alejadro Xalabarder
fonte
1

por https://askubuntu.com/a/1141367/47073

Você pode usar mate-search-tool, que é a mesma coisa gnome-search-toolque foi removida. Eu tive problemas com o searchmonkey, faltaram alguns resultados e foi lento, não recomendo.

Para instalar mate-search-tool:

sudo apt install mate-utils
mate-search-tool
Yrogirg
fonte
0

Você pode usar a opção Sublime Text Find in Files no Findmenu para procurar seqüências dentro de arquivos de uma pasta.

Para instalar o texto sublime 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Você também pode seguir esta pergunta para outras maneiras possíveis de instalar o Sublime no Ubuntu .

Para procurar em todos os arquivos por uma sequência de caracteres de uma pasta no Sublime Text, você pode seguir esta pergunta para obter respostas mais claras.

MAK Ripon
fonte