ti-enxame.com

Quais são as ferramentas para o Windows?

Alguma recomendação sobre grep ferramentas para o Windows? Idealmente, aqueles que poderiam aproveitar o sistema operacional de 64 bits.

Estou ciente de Cygwin , é claro, e também encontrei PowerGREP , mas eu estou querendo saber se existem jóias escondidas por aí?

290
Portman

Com base nas recomendações nos comentários, comecei a usar grepWin e é fantástico e livre .


(Eu ainda sou fã de PowerGREP , mas eu não uso mais.)

Eu sei que você já mencionou isso, mas PowerGREP é incrível .

Algumas das minhas características favoritas são:

  • Clique com o botão direito do mouse em uma pasta para executar o PowerGREP nele
  • Use expressões regulares ou texto literal
  • Especifique curingas para arquivos para incluir e excluir
  • Pesquisar e substituir
  • O modo de visualização é bom porque você pode ter certeza de que está substituindo o que pretende.

Agora percebo que as outras ferramentas do grep podem fazer todas as opções acima. É só que o PowerGREP empacota toda a funcionalidade em uma GUI muito fácil de usar.

Das mesmas pessoas maravilhosas que lhe trouxeram RegexBuddy e com quem eu não tenho afiliação além de amar suas coisas. (Deve-se notar que o RegexBuddy inclui uma versão básica do grep (para Windows) e custa muito menos do que o PowerGREP.)


Soluções adicionais

Comandos existentes do Windows

Implementações de Comandos Linux no Windows

Ferramentas grep com interface gráfica

Ferramentas adicionais do Grep

188
Mark Biek

FINDSTR é bastante poderoso, suporta expressões regulares e tem as vantagens de estar em todas as máquinas Windows já.

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 recursivamente findstr /s text_to_find *

315
Ray Hayes

GrepWin Fonte livre e aberta (GPL)

enter image description hereEu tenho usado grepWin que foi escrito por um dos caras do Tortoisesvn. Faz o trabalho no Windows ...

http://stefanstools.sourceforge.net/grepWin.html

104
Stan Sarama

Atualização de julho de 2013:

Outra ferramenta grep que agora uso o tempo todo no Windows é: AstroGrep :

AstroGrep awesomeness

Sua capacidade de mostrar mais do que apenas a pesquisa de linha (ou seja, o --context = NUM ​​de uma linha de comando grep) é inestimável.
E isso é rápido. Muito rápido, mesmo em um computador antigo com não - SSD drive (eu sei, eles costumavam fazer este disco rígido com spinning discos, chamados platters , certo louco?

É de graça.
É portátil (arquivo Zip simples para descompactar).


Resposta original outubro de 2008

alt textGnu Grep está tudo bem

Você pode baixá-lo por exemplo aqui: ( site ftp )

Todos os opções usuais estão aqui.

Isso, combinado com gawk e xargs (inclui 'find', de GnuWin32 ), e você pode realmente criar scripts como se estivesse no Unix!

Veja também o opções que estou usando para grep recursivamente :

grep --include "*.xxx" -nRHI "my Text to grep" *
52
VonC

O cmdlet Select-String do PowerShell estava bem na v1.0, mas é significativamente melhor para a v2. . Ter o PowerShell embutido nas versões recentes do Windows significa que suas habilidades aqui sempre serão úteis, sem primeiro instalar algo.

Novos parâmetros adicionados ao Select-String : O cmdlet Select-String agora suporta novos parâmetros, como:

  • -Context: Isso permite que você veja as linhas antes e depois da linha de partida
  • -AllMatches: que permite ver todas as correspondências em uma linha (Anteriormente, você podia ver apenas a primeira correspondência em uma linha)
  • -NotMatch: Equivalente ao grep -v o
  • -Encoding: 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 apelido ss para Select-String. Então você escreve:

gcir * .txt | ss foo

30
Jay Bazuzi

Pode não cair exatamente na categoria 'grep', mas não consegui entrar no Windows sem um utilitário chamado AgentRansack . É um utilitário "localizar em arquivos" baseado em gui com suporte a regex. É muito simples clicar com o botão direito em uma pasta, clicar em "ransack .." e encontrar arquivos contendo o que você está procurando. Extremamente rápido também.

23
jasonmray

Baregrep ( Baretail também é bom)

19
John Sheehan

Já faz alguns anos desde que você fez a pergunta, mas eu recomendo o AstroGrep ( http://astrogrep.sourceforge.net ).

É grátis, de código aberto e tem uma interface simples. Eu uso para pesquisar código o tempo todo.

17
jj.

O PowerShell foi mencionado algumas vezes. Aqui está como você realmente iria usá-lo de uma forma grosseira:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

Ele busca recursivamente todos os arquivos de texto na árvore de diretórios atual para SomeString com diferenciação de maiúsculas e minúsculas.

Melhor ainda, execute isto:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Então faça:

pgrep SomeStringToSearch *.txt

Então, para realmente torná-lo mágico, adicione o alias de função ao seu PowerShell Profile e você pode quase entorpecer a dor de não ter ferramentas de linha de comando adequadas.

16
jslatts

Cygwin inclui grep. Todas as ferramentas GNU do AMD Unix funcionam muito bem no Windows se você instalar o Cygwin.

http://www.cygwin.com/

14
Corey Goldberg

ack funciona bem no Windows (se você tiver Perl ). Eu acho melhor que grep para muitos usos.

13
cjm

Git no Windows = grep no cmd.exe

Acabei de descobrir a instalação Git lhe dará alguns comandos básicos do Linux: cat, grep, scp e todos os outros bons.

Instale, em seguida, adicione a pasta Git bin ao seu PATH e, em seguida, o seu cmd.exe tem a funcionalidade básica do Linux!

http://code.google.com/p/msysgit/downloads/list?can=

13
Daniel Magnusson

dnGREP é uma ferramenta grep de código aberto para o Windows. Ele suporta vários recursos interessantes, incluindo:

  • Anular para substituir
  • Capacidade de pesquisar clicando com o botão direito do mouse na pasta no Explorer
  • Opções avançadas de pesquisa, como pesquisa fonética e xpath
  • Pesquisa dentro de arquivos PDF, arquivos e documentos do Word

IMHO, tem uma interface agradável e limpa também :)

10
stankovski

Eu sempre uso WinGREP , mas eu tive problemas com isso, não deixando de ir arquivos.

7
Tom Kidd

Eu usei com sucesso tilitários GNU para Win32 por algum tempo e tem um grep bom, bem como cauda e outros utilitários úteis gnu para win32. Eu evito o Shell empacotado e simplesmente uso os executáveis ​​diretamente no prompt do comando win32.

A cauda que é empacotada também é uma boa aplicação.

7
user17314

Bem, ao lado da porta do Windows do GNU grep em:

http://gnuwin32.sourceforge.net/

há também o grep da Borland (muito semelhante ao GNU) disponível no freeware Free C++ Compiler da Borland (é um freeware com ferramentas de linha de comando).

7
Milan Babuškov

Sou autor de Aba Search and Replace. Assim como o PowerGREP, ele suporta expressões regulares, salvando padrões para uso posterior, desfazendo substituições, visualizando com realce de sintaxe para HTML/CSS/JS/PHP, codificações diferentes, incluindo UTF-8 e UTF-16.

Em comparação com o PowerGREP, a GUI é menos desordenada Aba instantaneamente começa a procurar enquanto você está digitando o padrão (incremental pesquisa), para que você possa experimentar expressões regulares e ver imediatamente os resultados.

Você é bem-vindo para experimentar minha ferramenta; Ficarei feliz em responder qualquer questão.

6
Peter Kankowski

Eu queria uma ferramenta grep gratuita para o Windows que permitisse que você clicasse com o botão direito do mouse em uma pasta e fizesse uma pesquisa de regex em cada arquivo - sem nenhuma tela de propaganda.

A seguir, uma solução rápida com base no findstr mencionado em uma postagem anterior.

Crie um arquivo de texto em algum lugar no seu 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, navegue até %APPDATA%\Microsoft\Windows\SendTo e arraste um atalho do arquivo em lotes para essa pasta SendTo.

Eu renomei o atalho para 1 GREP para mantê-lo no topo da lista SendTo.

Coisas que eu gostaria de fazer a seguir com isso é canalizar a saída de findstr através de algo que geraria um arquivo html para que você possa 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".

4
Philip Beck

Minha ferramenta de escolha é o apropriadamente chamado Windows Grep :

  • GUI simples e agradável
  • suporta pesquisa e substituição
  • pode mostrar as linhas ao redor das linhas encontradas
  • pode pesquisar em colunas em arquivos CSVs e de largura fixa
3
John N

nxUtils é o que eu uso, funciona perfeitamente para mim ...

3
Johan

Eu usei o grep da Borland por anos, mas encontrei um padrão que não combina. Eeeks O que mais não encontrou ao longo dos anos? Eu escrevi uma substituição de pesquisa de texto simples que faz recursão como grep - é FS.EXE na fonte forge.

grep falha ...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

o 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]
3
Jerry Lusa

Se você quer um simples para usar a ferramenta Windows Grep, criei um chamado 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 eu escrevi o meu próprio - 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.

2
John Pember

Outra boa opção é MSYS . Ele oferece vários outros utilitários GNU para permitir que você seja mais produtivo.

2
DDay

GREP para Windows

Eu tenho usado isso para sempre e felizmente ainda está disponível. É super rápido e muito pequeno.

1
bbrown

A sequência de caracteres do PowerShell é semelhante, não é a mesma opção e semântica, mas ainda é poderosa.

1
Jim Deville

Eu tenho usado AJC Grep diariamente por anos. A única grande limitação que encontrei é que os caminhos de arquivo são limitados a 255 caracteres e param quando encontram um, em vez de apenas emitir um aviso. É chato, mas não acontece com muita frequência.

Eu uso-o no Windows 7 Ultimate de 64 bits, por isso as suas credenciais de 64 bits estão bem.

1
CrispinH

Eu tenho Cygwin instalado em minha máquina e coloco o diretório bin do Cygwin no meu caminho ambiental, então o Cygwin grep funciona como normal em uma linha de comando que resolve todas as necessidades de script do grep no momento.

0
Satyrn

Se nenhuma das soluções é exatamente o que você está procurando, talvez você possa escrever um wrapper para FindStr que faça exatamente o que você precisa?

FindStr é muito bom de qualquer forma, por isso deve estar apenas batendo uma GUI (se você quiser) e fornecendo alguns recursos extras (como combiná-lo com Find para encontrar a contagem de arquivos que contenham uma string especificada [mencionada acima]).

Isto, naturalmente, pressupõe que você tenha o requisito, tempo e inclinação para fazer isso!

0
Stefan