Respostas:
(Ainda sou fã do PowerGREP , mas não o uso mais.)
Eu sei que você já mencionou, mas PowerGREP é incrível .
Alguns dos meus recursos favoritos são:
Agora percebo que as outras ferramentas grep podem fazer todas as opções acima. Só que o PowerGREP empacota todas as funcionalidades em uma GUI muito fácil de usar.
Das mesmas pessoas maravilhosas que trouxeram para você o RegexBuddy e com quem não tenho nenhuma afiliação além de amar as coisas deles. (Observe que o RegexBuddy inclui uma versão básica do grep (para Windows) e custa muito menos que o PowerGREP.)
O FINDSTR é bastante poderoso, suporta expressões regulares e tem as vantagens de já estar em todas as máquinas Windows.
c:\> FindStr /?
Searches for strings in files.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B Matches pattern if at the beginning of a line.
/E Matches pattern if at the end of a line.
/L Uses search strings literally.
/R Uses search strings as regular expressions.
/S Searches for matching files in the current directory and all
subdirectories.
/I Specifies that the search is not to be case-sensitive.
/X Prints lines that match exactly.
/V Prints only lines that do not contain a match.
/N Prints the line number before each line that matches.
/M Prints only the filename if a file contains a match.
/O Prints character offset before each matching line.
/P Skip files with non-printable characters.
/OFF[LINE] Do not skip files with offline attribute set.
/A:attr Specifies color attribute with two hex digits. See "color /?"
/F:file Reads file list from the specified file(/ stands for console).
/C:string Uses specified string as a literal search string.
/G:file Gets search strings from the specified file(/ stands for console).
/D:dir Search a semicolon delimited list of directories
strings Text to be searched for.
[drive:][path]filename
Specifies a file or files to search.
Use spaces to separate multiple search strings unless the argument is prefixed
with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.
Regular expression quick reference:
. Wildcard: any character
* Repeat: zero or more occurances of previous character or class
^ Line position: beginning of line
$ Line position: end of line
[class] Character class: any one character in set
[^class] Inverse class: any one character not in set
[x-y] Range: any characters within the specified range
\x Escape: literal use of metacharacter x
\<xyz Word position: beginning of word
xyz\> Word position: end of word
Exemplo de uso: findstr text_to_find *
ou para pesquisar recursivamentefindstr /s text_to_find *
GrepWin Gratuito e de código aberto (GPL)
Eu tenho usado o grepWin, que foi escrito por um dos caras do tortoisesvn. Faz o trabalho no Windows ...
Atualização em julho de 2013:
Outra ferramenta grep que agora uso o tempo todo no Windows é o AstroGrep :
Sua capacidade de me mostrar mais do que apenas a pesquisa de linha (ou seja, --context = NUM de um grep de linha de comando) é inestimável.
E é rápido. Muito rápido, mesmo em um computador antigo com unidade não SSD (eu sei, eles costumavam fazer esse disco rígido com discos giratórios , chamados de travessas , loucos, certo?)
É de graça.
É portátil (arquivo zip simples para descompactar).
Resposta original outubro de 2008
Gnu Grep está bem
Você pode baixá-lo, por exemplo, aqui: ( site ftp )
Todas as opções usuais estão aqui.
Combinado com gawk e xargs (inclui 'find', do GnuWin32 ), e você pode realmente escrever como se estivesse no Unix!
Veja também as opções que estou usando para grep recursivamente :
grep --include "*.xxx" -nRHI "my Text to grep" *
O cmdlet Select-String do PowerShell foi bom na v1.0, mas é significativamente melhor na v2.0 . Ter o PowerShell incorporado nas versões recentes do Windows significa que suas habilidades aqui sempre serão úteis, sem a instalação de algo.
Novos parâmetros adicionados ao Select-String : o cmdlet Select-String agora oferece suporte a novos parâmetros, como:
- -Context: Permite ver as linhas antes e depois da linha de partida
- -AllMatches: que permite ver todas as correspondências em uma linha (anteriormente, era possível ver apenas a primeira correspondência em uma linha)
- -NotMatch: equivalente ao grep -vo
- -Codificação: para especificar a codificação de caracteres
Acho conveniente criar uma função gcir
para Get-ChildItem -Recurse .
, com smarts, para passar parâmetros corretamente e um alias ss
para Select-String
. Então você escreve:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
para Select-String
realmente muito tempo?
Pode não estar exatamente na categoria 'grep', mas não consegui sobreviver no Windows sem um utilitário chamado AgentRansack . É um utilitário "find in files" baseado em gui com suporte a regex. É simples clicar com o botão direito do mouse em uma pasta, pressionar "ransack .." e encontrar arquivos contendo o que você está procurando. Extremamente rápido também.
Baregrep ( Baretail também é bom)
Faz alguns anos desde que você fez a pergunta, mas eu recomendaria o AstroGrep ( http://astrogrep.sourceforge.net ).
É gratuito, de código aberto e possui uma interface simples. Eu o uso para pesquisar código o tempo todo.
O PowerShell foi mencionado algumas vezes. Aqui está como você realmente o usaria de uma maneira acinzentada:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Ele pesquisa recursivamente todos os arquivos de texto na árvore de diretórios atual SomeString
com distinção entre maiúsculas e minúsculas.
Melhor ainda, execute o seguinte:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Então faça:
pgrep SomeStringToSearch *.txt
Em seguida, para torná-lo realmente mágico, adicione o alias da função ao seu perfil do PowerShell e você poderá reduzir o sofrimento de não ter as ferramentas de linha de comando adequadas.
Cygwin inclui grep. Todas as ferramentas GNU e coisas Unix funcionam muito bem no Windows se você instalar o Cygwin.
Git no Windows = grep no cmd.exe
Acabei de descobrir que a instalação do Git fornecerá alguns comandos básicos do Linux: cat, grep, scp e todos os outros bons.
Instale e adicione a pasta bin Git ao seu PATH e, em seguida, o cmd.exe possui a funcionalidade básica do Linux!
O dnGREP é uma ferramenta grep de código aberto para Windows. Ele suporta vários recursos interessantes, incluindo:
IMHO, ele tem uma interface agradável e limpa também :)
Bem, ao lado da porta Windows do GNU grep em:
http://gnuwin32.sourceforge.net/
há também o grep da Borland (muito semelhante ao GNU one) disponível no Freeware Borland Comp ++ do freeware (é um freeware com ferramentas de linha de comando).
Eu tenho usado com sucesso os utilitários GNU para Win32 por algum tempo e ele possui um bom grep, bem como tail e outros utilitários gnu úteis para win32. Evito o shell empacotado e simplesmente uso os executáveis no prompt de comando do win32.
O Tail que está empacotado também é uma aplicação bastante boa.
Eu sou o autor de Aba Search and Replace. Assim como o PowerGREP, ele suporta expressões regulares, salvando padrões para uso posterior, desfazer para substituições, visualizar com destaque de sintaxe para HTML / CSS / JS / PHP, diferentes codificações, incluindo UTF-8 e UTF-16.
Em comparação com o PowerGREP, a GUI é menos confusa. O Aba começa a pesquisar instantaneamente enquanto você digita o padrão (pesquisa incremental), para que você possa experimentar expressões regulares e ver imediatamente os resultados.
Você é convidado a experimentar minha ferramenta; Ficarei feliz em responder qualquer questão.
Eu queria uma ferramenta gratuita de grep para Windows que permitisse clicar com o botão direito do mouse em uma pasta e fazer uma pesquisa regex de todos os arquivos - sem nenhuma tela nag.
A seguir, uma solução rápida com base no findstr
mencionado em uma postagem anterior.
Crie um arquivo de texto em algum lugar do disco rígido, onde você mantém ferramentas de longa duração. Renomeie para .bat ou .cmd e cole o seguinte:
@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"
Em seguida, navegue até a pasta SendTo. No Windows 7, procure %APPDATA%\Microsoft\Windows\SendTo
e arraste um atalho do arquivo em lotes para a pasta SendTo.
Renomeei o atalho para 1 GREP
mantê-lo no topo da lista SendTo.
O que eu gostaria de fazer a seguir é canalizar a saída findstr
através de algo que geraria um arquivo html, para que você pudesse clicar em cada linha de saída para abrir esse arquivo. Além disso, não acho que funcione com atalhos para pastas. Eu teria que inspecionar o parâmetro e ver se ele contém ".lnk".
Eu usei o grep da Borland por anos, mas apenas encontrei um padrão que não corresponde. Eeeks. O que mais ele não encontrou ao longo dos anos? Eu escrevi uma substituição simples de pesquisa de texto que faz recursão como grep - é o FS.EXE no forge de origem.
grep falha ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
windows findstr funciona ...
C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG: AADD(mPRINTER, TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG: IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG: REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
Minha ferramenta de escolha é o apropriadamente chamado Windows Grep :
A cadeia de seleção do PowerShell é semelhante, não é a mesma opção e semântica, mas ainda é poderosa.
Se você deseja uma ferramenta simples de usar o Windows Grep, criei uma chamada P-Grep que disponibilizei para download gratuito no meu site: www.adjutantit.com - menu inicial, downloads.
O Windows Grep parecia ter problemas com um grande número de arquivos, então escrevi os meus - o que parece mais confiável. Você pode selecionar uma pasta, clicar com o botão direito e enviá-la para o P-Grep. A pasta sendto fica desatualizada durante a instalação.
Uso AJC Grep diariamente há anos. A única grande limitação que encontrei é que os caminhos dos arquivos são limitados a 255 caracteres e são interrompidos quando encontram um, em vez de apenas emitir um aviso. É chato, mas não acontece com muita frequência.
Eu o uso no Windows 7 Ultimate de 64 bits, para que suas credenciais de 64 bits sejam boas.
Eu o uso desde sempre e, felizmente, ainda está disponível. É super rápido e muito pequeno.
Se nenhuma das soluções é exatamente o que você está procurando, talvez você possa escrever um wrapper no FindStr que faça exatamente o que você precisa?
O FindStr é muito bom de qualquer maneira, portanto, ele deve apenas ativar uma GUI (se você quiser) e fornecer alguns recursos extras (como combiná-lo com o Find para encontrar a contagem de arquivos que contêm uma string especificada [mencionada acima]).
Obviamente, isso pressupõe que você tenha a exigência, o tempo e a inclinação para fazer isso!
Eu tenho o Cygwin instalado na minha máquina e coloquei o diretório bin do Cygwin no meu caminho ambiental, para que o greg do Cygwin funcione normalmente em uma linha de comando que resolva todas as minhas necessidades de script para grep no momento.