Eu preciso fazer um grep recursivo no Windows, algo assim no Unix / Linux:
grep -i 'string' `find . -print`
ou o método mais preferido:
find . -print | xargs grep -i 'string'
Estou preso apenas com o cmd.exe, então só tenho comandos internos do Windows. Infelizmente, não consigo instalar o Cygwin ou quaisquer ferramentas de terceiros como o UnxUtils neste servidor. Nem tenho certeza de que posso instalar o PowerShell. Alguma sugestão usando apenas os built-ins do cmd.exe (Windows 2003 Server)?
windows
command-line
grep
Andy White
fonte
fonte
grep -i 'string' -R .
que, como sugere @NathanFellman, evita o problema de comandos excessivos.Respostas:
findstr
pode fazer pesquisas recursivas (/ S) e suporta alguma variante da sintaxe regex (/ R).fonte
Os parâmetros têm os seguintes significados:
s
= recursivop
= pular caracteres não imprimíveisi
= não diferencia maiúsculas de minúsculasn
= imprimir números de linhaE a sequência a ser pesquisada é a parte que você coloca entre aspas depois
/c:
fonte
spin
? É a linha de texto a encontrar? E / g ou / f não é usado para especificar arquivos? Então, o que há com os aparelhos quadrados?findstr /?
explica cada parâmetro. s = recursivo, p = pular caracteres não imprimíveis, i = sem distinção entre maiúsculas e minúsculas, n = imprimir números de linha. Você não precisa necessariamente de todos, mas eu gosto deles espin
é fácil de lembrar. A string a ser pesquisada é a parte que você colocou entre aspas/c:
./?
, mas na verdade eu não sabia que modificadores eram usados assim/spin
. Eu pensei que eles eram usados como/s/p/i/n
./
s. Isso é um. Nem todos permitem que você faça isso. Você sabe, o cmd é muito especial.Acabei de pesquisar um texto com o seguinte comando, que me listou todos os nomes de arquivos que contêm meu 'texto de pesquisa' especificado.
fonte
Eu recomendo uma ferramenta realmente ótima:
utilitários unix nativos:
Apenas descompacte-os e coloque essa pasta na variável de ambiente PATH e pronto! :)
Funciona como um encanto, e há muito mais do que apenas grep;)
fonte
Pesquisa recursiva por
import
palavra dentro dasrc
pasta:fonte
fonte
Select-String
funcionou melhor para mim. Todas as outras opções listadas aqui, comofindstr
, não funcionaram com arquivos grandes.Aqui está um exemplo:
Nota : Isso requer o PowerShell
fonte
Se você tiver o Perl instalado, poderá usar o ack , disponível em http://beyondgrep.com/ .
fonte