Necesito hacer un grep recursivo en Windows, algo como esto en Unix / Linux:
grep -i 'string' `find . -print`
o el método más preferido:
find . -print | xargs grep -i 'string'
Estoy atascado con solo cmd.exe, por lo que solo tengo comandos integrados de Windows. Lamentablemente , no puedo instalar Cygwin ni ninguna herramienta de terceros como UnxUtils en este servidor. Ni siquiera estoy seguro de poder instalar PowerShell. ¿Alguna sugerencia que use solo cmd.exe incorporado (Windows 2003 Server)?
windows
command-line
grep
Andy White
fuente
fuente
grep -i 'string' -R .
que, como sugiere @NathanFellman, evite el problema de comandos demasiado largos.Respuestas:
findstr
puede hacer búsquedas recursivas (/ S) y admite alguna variante de sintaxis de expresiones regulares (/ R).fuente
Los parámetros tienen los siguientes significados:
s
= recursivop
= omitir caracteres no imprimiblesi
= mayúsculas y minúsculasn
= imprimir números de líneaY la cadena a buscar es el bit que pones entre comillas después
/c:
fuente
spin
? ¿Es la línea de texto para encontrar? ¿Y no se usa / go / f para especificar archivos? Entonces, ¿qué pasa con los corchetes?findstr /?
explica cada parámetro s = recursivo, p = omitir caracteres no imprimibles, i = mayúsculas y minúsculas, n = imprimir números de línea. No necesariamente necesita todos esos, pero me gustan yspin
es fácil de recordar. La cadena a buscar es el bit que pone entre comillas después/c:
./?
, pero en realidad no sabía que se usaban modificadores como/spin
. Pensé que se usaban como/s/p/i/n
./
s. Este es uno. No todos te permiten hacer eso. Ya sabes, cmd es muy especial.Acabo de buscar un texto con el siguiente comando que me enumeró todos los nombres de archivo que contienen mi 'texto de búsqueda' especificado.
fuente
Recomiendo una herramienta realmente genial:
utilidades nativas de Unix:
¡Simplemente descomprímalos y coloque esa carpeta en su variable de entorno PATH y listo! :)
Funciona como un encanto, y hay mucho más que solo grep;)
fuente
Búsqueda recursiva de
import
palabra dentro de lasrc
carpeta:fuente
fuente
Select-String
funcionó mejor para mí Todas las otras opciones enumeradas aquí, comofindstr
, no funcionaron con archivos grandes.Aquí hay un ejemplo:
nota : Esto requiere Powershell
fuente
Si tiene instalado Perl, puede usar ack , disponible en http://beyondgrep.com/ .
fuente