Ferramentas para procurar cadeias dentro de arquivos sem indexação [fechado]

170

Tenho que alterar algumas cadeias de conexão em um aplicativo legado incrivelmente antigo, e os programadores que a criaram acharam que seria uma ótima idéia aplicar o aplicativo inteiro com cadeias de conexão em todo o lugar.

A pesquisa de "projeto atual" do Visual Studio é incrivelmente lenta e não confio na Pesquisa do Windows.

Então, qual é a melhor ferramenta de pesquisa de texto gratuita e não indexada disponível? Tudo o que você deve fazer é retornar uma lista com arquivos que contêm a sequência desejada dentro de uma pasta e suas subpastas.

Estou executando o Windows 2003 Server.

kitsune
fonte
010 Editorpesquisa arquivos huuuge em 0 segundo.
Morteza Ziyae 01/09/2015
Depeche View supera tudo o resto desta página, mãos para baixo. Existem alguns atalhos que você precisará de alguns minutos para ler o arquivo de ajuda e aprender. stahlworks.com/dev/depeche-view.html
BVernon
Também uso muito isso, no entanto, obriga você a clicar em cada arquivo de resultado para ver o conteúdo correspondente no painel direito. Além disso, o conteúdo do arquivo no painel direito não é com zoom (o tamanho da fonte é muito pequeno).
Meryan
Essa é uma boa pergunta para engenharia de software, mas offtopic no SO. Qual site de rede SE está no tópico? Veja, por exemplo, perguntas SE.SE sobre 'base de código de pesquisa'. Devemos migrar esta questão para que possa ser reaberta!
SMCI
1
Dê uma olhada no File Content Finder na App Store (aviso - sou o desenvolvedor). Ele pode pesquisar em arquivos de texto / fonte, mas também em pdf, doc (x), xls (x) e até arquivos jpg / png verificados - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Respostas:

60

Resposta original

O Windows Grep faz isso muito bem.

Editar: o Windows Grep não está mais sendo mantido ou disponibilizado pelo desenvolvedor. Um link alternativo para download está aqui: Windows Grep - alternativo

Resposta Atual

O Visual Studio Code possui excelentes recursos de pesquisa e substituição em arquivos. É extremamente rápido, suporta regex e visualização ao vivo antes da substituição.

insira a descrição da imagem aqui

RedFilter
fonte
10
ss64.com/nt/findstr.html
JohnnyFromBF
10
Na minha máquina (Windows 7), ele travou duas vezes. Vou tentar outra coisa.
B. Clay Shannon
2
É velho, também caiu para mim. Mesmo se não perfeito para algumas metas grepWin é melhor Imoh
Paolo
9
AstroGrep também é rápido e é sem istall
Zorb
Funcionou bem para mim no Windows 7 - sem falhas
w5m
364

Sou fã da caixa de diálogo Localizar arquivos no Notepad ++ . Bônus : é grátis.

insira a descrição da imagem aqui

BQ.
fonte
Que infelizmente não pode - ou não - pesquisar todos os arquivos do Microsoft Word. Algo sobre a diferença entre ".doc" e ".docm", suspeito
Carl Witthoft
11
@CarlWitthoft .docm, como .docx, .xlsm, e .xlsxsão realmente documentos XML zipados.
31515 Ian
1
funciona bem para pastas pequenas com um número normal de arquivos, trava para tamanhos grandes com muitas pastas de arquivos, pelo menos quando uso meu laptop. Um pouco mais rápido ao usar um PC poderoso. Além disso, enquanto está pesquisando, não pode abrir outros arquivos.
Mohammed Joraid 12/02
Encontrei meu texto. No entanto, não me permitiu selecionar nos resultados quais valores substituir e quais manter. Tudo ou nada?
ofer.sheffer
5
Não tinha ideia de que isso era uma opção no bloco de notas ++. Ótima solução para encontrar arquivos ausentes! No entanto, parece ter problemas com tamanhos de arquivo grandes. Ocasionalmente, ocorre o erro "arquivo muito grande para abrir".
John August
167

Há também um programa interno do Windows chamado findstr.execom o qual você pode pesquisar em arquivos.

>findstr /s "provider=sqloledb" *.cs
JohnnyFromBF
fonte
3
Simples e eficiente!
Markus Fantone
Isso é muito mais rápido que o Windows Explorer e realmente encontrou o texto que eu estava procurando, enquanto o uso do Windows Explorer não produziu resultados de pesquisa para mim. Obrigado.
mbomb007
1
Para mim, a melhor resposta sobre este tópico, porque você não precisa instalar nada. No meu caso, tive que complementar a adição de alguns argumentos, porque há muita informação para aparecer na tela. O argumento / M lista apenas o nome do arquivo que contém as informações que eu estava procurando. Para acessar o manual do comando findstr, digite "findstr /?" no console.
Alexandre Ribeiro
Este é um ótimo utilitário, mas parece que não consegue ler caracteres cirílicos nos nomes dos arquivos. Por exemplo:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii 16/02/19
1
O findstr não suporta texto UTF16.
David Bremner
34

Eu gosto do AstroGrep. Os resultados são mostrados em uma lista. Um clique em uma linha mostra a linha inteira como uma visualização destacando o hit. Parece ser bastante rápido, enxuto e gratuito. Testado no Windows 7, 8, 10 e Windows Server 2008 R2. Permite expressões regulares.

Última captura de tela do AstroGrep

O AstroGrep é um utilitário de pesquisa de arquivos da GUI do Microsoft Windows (grep). Seus recursos incluem expressões regulares, opções de impressão versáteis, armazenam os caminhos usados ​​mais recentes e possuem um recurso de "contexto", que é muito bom para examinar o código-fonte

Referência: AstroGrep

Anytoe
fonte
7
Fora de todos os outros listados aqui, este é o único que permite especificar padrões de exclusão para pastas. Muito útil ao tentar pular pastas como node_modulesou bower_components.
Mrchief 2/11/16
1
Software muito bom, rápido, configurável e mostra arquivos junto com o contexto relacionado
HanniBaL90
1
E 'rápido' merece uma segunda menção ...self == happy
cssyphus
9

A pesquisa em pastas do Visual Studio é de longe a mais rápida que encontrei.

Eu acredito que ele pesquisa inteligentemente apenas arquivos de texto (não binários) e as pesquisas subsequentes na mesma pasta são extremamente rápidas, ao contrário das outras ferramentas (provavelmente os arquivos de texto se encaixam no cache do disco do Windows).

O VS2010 em um disco rígido comum, sem SSD, leva 1 minuto para pesquisar em uma pasta de 20 GB com 26 mil arquivos, código fonte e binários misturados. 15k arquivos são pesquisados ​​- o restante provavelmente é ignorado devido ao fato de serem arquivos binários. Pesquisas subsequentes na mesma pasta são da ordem de segundos (até que as coisas sejam despejadas do cache).

O próximo mais próximo que encontrei para a mesma pasta foi o grepWin. Cerca de 3 minutos. Excluí arquivos maiores que 2000 KB (padrão). A configuração "Incluir arquivos binários" parece não fazer nada em termos de acelerar a pesquisa, parece que os arquivos binários ainda são tocados (erro?), Mas eles não aparecem nos resultados da pesquisa. Todas as pesquisas subsequentes levam os mesmos 3 minutos - não podem tirar proveito do cache do disco rígido. Se eu restringir a arquivos menores que 200k, a pesquisa inicial será de 2,5 minutos e as pesquisas subseqüentes serão da ordem de segundos, mais rápido que o VS - no cache.

O Agent Ransack e o FileSeek são muito lentos nessa pasta, em torno de 20 minutos, devido à pesquisa em tudo, incluindo arquivos binários gigantes de vários gigabytes. Eles pesquisam entre 10 e 20 MB por segundo, de acordo com o Monitor de Recursos.

ATUALIZAÇÃO: o Agent Ransack pode ser configurado para pesquisar arquivos de determinados tamanhos e, usando o limite <200 KB, é 1: 15min para uma nova pesquisa e 5s para pesquisas subseqüentes. Mais rápido que o grepWin e tão rápido quanto o VS em geral. Na verdade, é muito bom se você deseja manter várias pesquisas em guias e não poluir a lista de pastas pesquisadas recentemente pelo VS, e deseja manter a capacidade de pesquisar binários, o que o VS parece não querer fazer. O Agent Ransack também cria uma entrada no menu de contexto do Explorer, facilitando o lançamento a partir de uma pasta. Igual ao grepWin, mas com uma interface mais agradável e mais rápida.

Minha nova configuração de pesquisa é o Agent Ransack para conteúdo e Tudo para nomes de arquivos (ferramenta incrível, resultados instantâneos!).

Steve
fonte
3

Se você não deseja instalar ferramentas que não sejam da Microsoft, faça o download do STRINGS.EXE do Microsoft Sysinternals e faça um procedimento como este:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER

echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt

goto END

:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END

:NOFOLDER
echo Folder %1 does not exist
goto END

:END rem - exit
FIBA
fonte