Como o título sugere, qual é a maneira mais rápida (precisa) de encontrar quais linhas de quais arquivos correspondem a uma string específica.
Especificamente, estou pesquisando .cpp
e .h
arquivos.
Como o título sugere, qual é a maneira mais rápida (precisa) de encontrar quais linhas de quais arquivos correspondem a uma string específica.
Especificamente, estou pesquisando .cpp
e .h
arquivos.
Respostas:
O Notepad ++ tem a opção 'localizar nos arquivos', que está localizada no menu 'Pesquisar'. Isso permitirá que você pesquise vários arquivos em uma pasta (você pode especificar a pasta) e mostrará os números de linha de cada arquivo também . Você pode alternar se as subpastas e pastas ocultas são incluídas na pesquisa e também permite pesquisar com \ t \ n etc. e pesquisar expressões regulares, se necessário.
O Notepad ++ é um editor de programadores do Windows (não um IDE) e também é Open Source.
(Eu percebo que você provavelmente já ouviu falar do notepad ++, mas eu estou apenas mencionando isso aqui como uma opção caso você não estivesse ciente disso especial recurso, e para outros que tropeçam nesta discussão mais tarde.
Felicidades :)
O agente Ransack funciona como um encanto. Baixe Aqui .
Em sistemas Unix, as pessoas provavelmente usariam o grep para fazer isso, então por que não usar o Windows Grep?
Aqui está uma solução Powershell:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString
o -r
em gci
é para recursão e, claro, é opcional, assim como os dois filtros de extensão de arquivo. Um parâmetro útil de Select-String
é -list
que relatará apenas a primeira ocorrência de uma correspondência em um arquivo, em vez de fornecer a você cada ocorrência dele por arquivo.
Talvez você queira abrir instantaneamente cada arquivo onde uma correspondência é encontrada? Bem, a pequena alteração a seguir é bastante útil, dependendo do que você tem como associação de arquivos padrão:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii
-filter "*.cpp","*.h"
aceita várias extensões? Isso deve sim ler -include ("*.cpp","*.hpp")
ao fazer uma localização de algum SW eu uso DocFetcher para pesquisar as mesmas strings em arquivos previamente traduzidos. É gratuito e de código aberto, mas precisa criar primeiro o índice. Apenas tente. :-)
Se você está feliz na linha de comando / com o Linux. Posso sugerir a instalação de uma versão do grep para windows?
cygwin é uma maneira bastante útil de obter isso e lhe dará um ambiente Linux completo, com shell bash e um terminal rxvt. Caso contrário, se você quiser apenas as ferramentas, gnuwin32 mas você será preso com o prompt do Windows cmd.exe.
Microsoft realmente tem sua própria versão das ferramentas Unix como um download, mas eles pareciam bastante lentos comparados aos portes do gnu quando eu os experimentei. Eles também vão eliminá-los com o Windows 8.
É assim que procuro por cadeias de texto no Registro do Windows ou arquivos na minha máquina com Windows XP. Vamos supor que eu queira encontrar a string "Enterprise" em um arquivo de texto simples na unidade c: e, em seguida, gravar a saída em um arquivo chamado search_result.txt em c: \ windows \ temp
Abra um prompt de comando e digite:
findstr "Enterprise" c: *. txt & gt; c: \ windows \ temp \ search_result.txt
A string que você procura é sensível a maiúsculas e minúsculas. "Enterprise" e "enterprise" não encontrarão a mesma string.