Respuestas:
(Todavía soy fanático de PowerGREP , pero ya no lo uso).
Sé que ya lo mencionaste, pero PowerGREP es increíble .
Algunas de mis características favoritas son:
Ahora me doy cuenta de que las otras herramientas grep pueden hacer todo lo anterior. Es solo que PowerGREP empaqueta toda la funcionalidad en una GUI muy fácil de usar.
De la misma gente maravillosa que te trajo RegexBuddy y con quien no tengo ninguna afiliación más allá de amar sus cosas. (Cabe señalar que RegexBuddy incluye una versión básica de grep (para Windows) y cuesta mucho menos que PowerGREP).
FINDSTR es bastante potente, admite expresiones regulares y tiene las ventajas de estar en todas las máquinas con 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
Ejemplo de uso: findstr text_to_find *
o para buscar de forma recursivafindstr /s text_to_find *
GrepWin Gratis y de código abierto (GPL)
He estado usando grepWin que fue escrito por uno de los chicos de tortugas. ¿El trabajo en Windows ...
Actualización de julio de 2013:
Otra herramienta grep que ahora uso todo el tiempo en Windows es AstroGrep :
Su capacidad de mostrarme más que solo la búsqueda de línea (es decir, el --context = NUM de un grep de línea de comandos) es invaluable.
Y es rapido. Muy rápido, incluso en una computadora vieja con disco que no es SSD (lo sé, solían hacer este disco duro con discos giratorios , llamados platos , loco, ¿verdad?)
Es gratis.
Es portátil (archivo zip simple para descomprimir).
Respuesta original de octubre de 2008
Gnu Grep está bien
Puede descargarlo, por ejemplo, aquí: ( ftp del sitio )
Todas las opciones habituales están aquí.
Eso, combinado con gawk y xargs (incluye 'find', de GnuWin32 ), ¡y realmente puedes escribir como si estuvieras en Unix!
Vea también las opciones que estoy usando para grep recursivamente :
grep --include "*.xxx" -nRHI "my Text to grep" *
El cmdlet Select-String de PowerShell estuvo bien en v1.0, pero es significativamente mejor para v2.0 . Tener PowerShell integrado en las versiones recientes de Windows significa que sus habilidades aquí siempre serán útiles, sin instalar primero algo.
Nuevos parámetros agregados a Select-String : el cmdlet Select-String ahora admite nuevos parámetros, como:
- -Contexto: esto le permite ver líneas antes y después de la línea de coincidencia
- -AllMatches: que le permite ver todas las coincidencias en una línea (Anteriormente, solo podía ver la primera coincidencia en una línea)
- -NotMatch: equivalente a grep -vo
- -Encoding: para especificar la codificación de caracteres
Me parece conveniente crear una función gcir
para Get-ChildItem -Recurse .
, con inteligencia para pasar parámetros correctamente, y un alias ss
para Select-String
. Entonces usted escribe:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
para Select-String
realmente demasiado larga?
Puede que no caiga exactamente en la categoría 'grep', pero no podría funcionar en Windows sin una utilidad llamada AgentRansack . Es una utilidad "buscar en archivos" basada en GUI con soporte para expresiones regulares. Es muy simple hacer clic derecho en una carpeta, presionar "ransack .." y buscar archivos que contengan lo que está buscando. Extremadamente rápido también.
Baregrep ( Baretail también es bueno)
Han pasado un par de años desde que hizo la pregunta, pero le recomendaría AstroGrep ( http://astrogrep.sourceforge.net ).
Es gratis, de código abierto y tiene una interfaz simple. Lo uso para buscar código todo el tiempo.
PowerShell ha sido mencionado varias veces. Así es como realmente lo usarías de una manera grepish:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Busca recursivamente todos los archivos de texto en el árbol de directorios actual SomeString
con mayúsculas y minúsculas.
Aún mejor, ejecuta esto:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Entonces hazlo:
pgrep SomeStringToSearch *.txt
Luego, para hacerlo realmente mágico, agregue el alias de función a su perfil de PowerShell y casi puede mitigar el dolor de no tener las herramientas de línea de comando adecuadas.
Cygwin incluye grep. Todas las herramientas GNU y las cosas de Unix funcionan muy bien en Windows si instala Cygwin.
Git en Windows = grep en cmd.exe
Me acabo de enterar de que instalar Git te dará algunos comandos básicos de Linux: cat, grep, scp y todos los demás buenos.
Instale, luego agregue la carpeta Git bin a su RUTA y luego su cmd.exe tiene una funcionalidad básica de Linux.
dnGREP es una herramienta grep de código abierto para Windows. Es compatible con una serie de características interesantes que incluyen:
En mi humilde opinión, también tiene una interfaz agradable y limpia :)
Siempre uso WinGREP , pero he tenido problemas al no soltar archivos.
Bueno, al lado del puerto de Windows del GNU grep en:
http://gnuwin32.sourceforge.net/
también está disponible el grep de Borland (muy similar a GNU one) en el compilador gratuito C ++ de Borland (es un programa gratuito con herramientas de línea de comandos).
He utilizado con éxito las utilidades de GNU para Win32 durante bastante tiempo y tiene un buen grep, así como la cola y otras útiles utilidades de gnu para win32. Evito el shell empaquetado y simplemente uso los ejecutables directamente en el símbolo del sistema win32.
La cola que viene empaquetada es también una muy buena aplicación.
Soy el autor de Aba Search and Replace. Al igual que PowerGREP, admite expresiones regulares, guardando patrones para su uso posterior, deshacer para reemplazos, vista previa con resaltado de sintaxis para HTML / CSS / JS / PHP, diferentes codificaciones, incluidas UTF-8 y UTF-16.
En comparación con PowerGREP, la GUI está menos abarrotada. Aba comienza a buscar instantáneamente mientras escribe el patrón (búsqueda incremental), para que pueda experimentar con expresiones regulares e inmediatamente ver los resultados.
Eres bienvenido a probar mi herramienta; Estaré feliz de responder cualquier pregunta.
Quería una herramienta grep gratuita para Windows que le permitiera hacer clic derecho en una carpeta y hacer una búsqueda de expresiones regulares de cada archivo, sin ninguna pantalla molesta.
La siguiente es una solución rápida basada en lo findstr
mencionado en una publicación anterior.
Cree un archivo de texto en algún lugar de su disco duro donde guarde herramientas de larga duración. Cambie el nombre a .bat o .cmd y pegue lo siguiente en él:
@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"
Luego vaya a la carpeta SendTo. En Windows 7, busque %APPDATA%\Microsoft\Windows\SendTo
y arrastre un acceso directo del archivo por lotes a esa carpeta SendTo.
Cambié el nombre del acceso directo a 1 GREP
para mantenerlo en la parte superior de la lista SendTo.
Lo que me gustaría hacer a continuación con esto es canalizar la salida a findstr
través de algo que generaría un archivo html para que pueda hacer clic en cada línea de salida para abrir ese archivo. Además, no creo que funcione con accesos directos a carpetas. Tendría que inspeccionar el parámetro y ver si contiene ".lnk".
Usé el grep de Borland durante años, pero acabo de encontrar un patrón que no coincide. Eeeks ¿Qué más no ha encontrado a lo largo de los años? Escribí un reemplazo simple de búsqueda de texto que hace una recursión como grep: es FS.EXE en la falsificación de origen.
grep falla ...
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]
Mi herramienta de elección es el nombre apropiado de Windows Grep :
La cadena de selección de PowerShell es similar, no tiene las mismas opciones y semántica, pero sigue siendo poderosa.
Si desea una herramienta de Windows Grep fácil de usar, creé una llamada P-Grep que he puesto a disposición para su descarga gratuita desde mi sitio web: www.adjutantit.com - menú de inicio, descargas.
Windows Grep parecía tener problemas con una gran cantidad de archivos, así que escribí el mío, lo que parece más confiable. Puede seleccionar una carpeta, hacer clic derecho y enviarla a P-Grep. La carpeta sendto no se actualiza durante la instalación.
He estado usando AJC Grep diariamente durante años. La única limitación importante que he encontrado es que las rutas de archivo están limitadas a 255 caracteres y se detiene cuando encuentra uno, en lugar de solo emitir una advertencia. Es molesto pero no sucede muy a menudo.
Lo uso en Windows 7 Ultimate de 64 bits, por lo que sus credenciales de 64 bits están bien.
Lo he estado usando por siempre y afortunadamente todavía está disponible. Es súper rápido y muy pequeño.
Si ninguna de las soluciones es lo que está buscando, ¿tal vez podría escribir un contenedor para FindStr que haga exactamente lo que necesita?
FindStr es bastante bueno de todos modos, por lo que solo debería activar una GUI (si lo desea) y proporcionar algunas características adicionales (como combinarlo con Buscar para encontrar el recuento de archivos que contienen una cadena especificada [mencionada anteriormente]).
¡Esto, por supuesto, asume que tienes el requisito, el tiempo y la inclinación para hacerlo!
Tengo Cygwin instalado en mi máquina y pongo el directorio bin de Cygwin en mi ruta ambiental, por lo que Cygwin grep funciona de manera normal en una línea de comando que resuelve todas mis necesidades de scripts para grep en este momento.