no confunda ms-dos con el símbolo del sistema. + uso de find y Findstr e incluso grep, para windows ... seguramente se encuentra fácilmente con una búsqueda rápida. Incluso hay tablas de comandos equivalentes en Linux y Windows. también tu ejemplo de bash ni siquiera es específico de bash ... solo supongo, * nix OS.
barlop
Respuestas:
280
Findstr suena como lo que quieres. Lo uso todo el tiempo como un equivalente grep aproximado en la plataforma Windows.
Sí, eso parece ser lo que estoy buscando. Entiendo que probablemente hay limitaciones. Lo probaré.
chrisjlee
18
¿Por qué no podrían simplemente llamarlo grep?
Victor Grazi
66
@VictorGrazi En realidad lo hicieron al principio, vea este artículo . Originalmente se llamaba qgrep, pero luego se renombró.
Zitrax
3
El gran problema findstres que el patrón regex puede no contener alternativas.
Wolf
La pregunta es sobre Windows 7, pero ¿qué otras versiones de Windows tienen findstrpor defecto? ¿Desde Windows XP ?
Peter Mortensen el
44
Hay varias posibilidades:
Use un puerto de un grepcomando Unix . Hay varias opciones Los mencionados anteriormente son GNUWin32 , cygwin y unxutils . Menos conocidas, pero de alguna manera mejores, son las herramientas en el kit de herramientas de utilidad SFUA , que se ejecutan en el Subsistema para aplicaciones basadas en UNIX que viene en la caja con Windows 7 Ultimate Edition y Windows Server 2008 R2. (Para Windows XP, uno puede descargar e instalar Servicios para UNIX versión 3.5 .) Este conjunto de herramientas tiene una gran cantidad de herramientas TUI de línea de comandos, desde mvy du, a través de los shells Korn y C, hacia perlyawk. Viene en sabores x86-64 e IA64, así como en x86-32. Los programas se ejecutan en el entorno POSIX apropiado nativo de Windows, en lugar de con archivos DLL de emulador (como cygwin1.dll) superponer cosas sobre Win32. Y sí, el kit de herramientas tiene grep, así como unos 300 más.
En su primera revisión escribió MS-DOS, solo hay FIND, que yo sepa. Pero es un sistema operativo antiguo que ya no se usa.
En el símbolo del sistema de Windows NT (por ejemplo, Win2K y ganar XP y versiones posteriores, así por ejemplo, win7, win10), se puede utilizar findy findstr, y si se descarga GnuWin32 entoncesgrep
Las diferencias básicas son que findtr tiene soporte para algunas expresiones regulares . Grep admite expresiones regulares mejor.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?y findstr /?te muestra lo que hacen los interruptores.
Gnuwin32 tiene "paquetes". Si descarga GnuWin32, le sugiero el paquete coreutils para un conjunto de utilidades básicas útiles con las que estaría familiarizado, pero grep no está en ese, es su propio paquete.
Adicional
El grep de GnuWin32, la última vez que lo revisé, es viejo. El grep de Cygwin está mucho más actualizado. También tenga en cuenta que muchas personas usan máquinas virtuales en lugar de puertos de Windows de comandos * nix.
Si prefiere usar grep, en lugar de findstr, hay una .exeversión de archivo único en UnxUtils , por lo que es portátil y no hay necesidad de instalarlo, o usar algo como Cygwin.
@userunknown bien, como ejemplo, el comando unxutils sed es más antiguo y no admite \ d por ejemplo \ d22 para especificar la cotización. Es posible que un wget anterior no descargue una página que una nueva tendrá, y si solicita asistencia técnica, puede solicitarle que obtenga la última, ya que eso puede resolver algunos problemas. Un grep realmente viejo, sin duda, no tendrá el nivel de soporte de
expresiones regulares que
3
Puede intentar instalar Chocolatey en Windows y, a través de eso, instalar la herramienta Gow . Esto te proporcionará grepen Windows.
Gowsignifican GNU en Windows. Proporciona utilidades de línea de comandos de Unix en Windows.
Es un administrador de paquetes, como un apt-get pero para Windows. Obtuvo su nombre porque el desarrollador lo basó en NuGet, que es un administrador de paquetes para Visual Studio, y eso suena como nugget (como en nugget de pollo), por lo que pensó que sería "divertido" o "inteligente" y llamó su programa Chocolatey NuGet. Escuché eso en un podcast que lo entrevistó. Gow también se puede descargar de forma independiente
barlop
1
Soy nuevo en Gow, después de unos días de uso, puedo testificar que me gusta mucho; es mejor que todos los puertos anteriores de utilidades UNIX que había usado antes.
Radim Cernej
@RadimCernej su comentario no es útil a menos que indique cómo cree que es mejor.
barlop
@barlop: desde que escribí mi comentario de enero de 2016, gradualmente y completamente cambié a Gow. Hasta ahora no hay errores, tiene todas las utilidades que necesito / uso, la ruta se emite en formato Microsoft (lo que facilita copiar / pegar en otros programas). Gow no es lo suficientemente invasivo (fácil de instalar y quitar) que recomiendo encarecidamente que lo pruebe.
Radim Cernej
2
Uso de bash
$ ls | grep root
Uso de Cmd
> dir /b | findstr root
donde /bsignifica b son la lista de directorios y archivos
Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
@DavidPostill: esta es una solución rápida para usuarios de "TL; DR" (como yo)
vladkras
Eso no es excusa para agregar una respuesta que no aporta nada nuevo. En cualquier caso, la respuesta aceptada siempre aparecerá primero, por lo que se leerá antes que la suya.
DavidPostill
@DavidPostill, no importa, pero la respuesta aceptada contiene varias claves excesivas e inexplicables/B , /Ry /COP no preguntó, mientras que mi respuesta da el equivalente exacto
vladkras
El /bes hacer que la dirsalida sea la misma que la lssalida. Si lo prueba, verá la diferencia. Por lo tanto, no es el equivalente exacto.
DavidPostill
2
Escribí una alternativa de Windows a grep usando el código Hybrid Batch / JScript. Escribí esto porque obtener los caracteres de escape directamente en el puerto grep GNU Win32 fue un verdadero dolor. Esta versión funciona mucho más como desea que funcione la versión GNU en Windows:
El programa de reemplazo múltiple se ha preparado para que se puedan llevar a cabo muchas funciones mediante el uso de parámetros de línea de comandos. El uso de la línea de comando se ve a continuación:
Respuestas:
Findstr suena como lo que quieres. Lo uso todo el tiempo como un equivalente grep aproximado en la plataforma Windows.
Otro ejemplo con tuberías:
fuente
findstr
es que el patrón regex puede no contener alternativas.findstr
por defecto? ¿Desde Windows XP ?Hay varias posibilidades:
grep
comando Unix . Hay varias opciones Los mencionados anteriormente son GNUWin32 , cygwin y unxutils . Menos conocidas, pero de alguna manera mejores, son las herramientas en el kit de herramientas de utilidad SFUA , que se ejecutan en el Subsistema para aplicaciones basadas en UNIX que viene en la caja con Windows 7 Ultimate Edition y Windows Server 2008 R2. (Para Windows XP, uno puede descargar e instalar Servicios para UNIX versión 3.5 .) Este conjunto de herramientas tiene una gran cantidad de herramientas TUI de línea de comandos, desdemv
ydu
, a través de los shells Korn y C, haciaperl
yawk
. Viene en sabores x86-64 e IA64, así como en x86-32. Los programas se ejecutan en el entorno POSIX apropiado nativo de Windows, en lugar de con archivos DLL de emulador (comocygwin1.dll
) superponer cosas sobre Win32. Y sí, el kit de herramientas tienegrep
, así como unos 300 más.grep
comandos nativos de Win32 que la gente ha escrito y publicado. Tim Charron tiene una versión nativa de Win32 de un GNU grep modificado , por ejemplo. También hay PowerGREP , Bare Grep , grepWin , AstroGrep y dnGrep , aunque todos estos son programas GUI, no programas TUI.find
yfindstr
. La sintaxis es diferente a la degrep
, nota, como lo es la capacidad de expresión regular.fuente
Si los comandos de PowerShell están permitidos, use
o corto
Tenga en cuenta que el alias
sls
solo se define a partir de PowerShell versión 3.0. Puede agregar un alias para escribir menos:Para ejecutar el comando de PowerShell directamente desde cmd, use
fuente
En su primera revisión escribió MS-DOS, solo hay
FIND
, que yo sepa. Pero es un sistema operativo antiguo que ya no se usa.En el símbolo del sistema de Windows NT (por ejemplo, Win2K y ganar XP y versiones posteriores, así por ejemplo, win7, win10), se puede utilizar
find
yfindstr
, y si se descarga GnuWin32 entoncesgrep
Las diferencias básicas son que findtr tiene soporte para algunas expresiones regulares . Grep admite expresiones regulares mejor.
find /?
yfindstr /?
te muestra lo que hacen los interruptores.Gnuwin32 tiene "paquetes". Si descarga GnuWin32, le sugiero el paquete coreutils para un conjunto de utilidades básicas útiles con las que estaría familiarizado, pero grep no está en ese, es su propio paquete.
Adicional
El grep de GnuWin32, la última vez que lo revisé, es viejo. El grep de Cygwin está mucho más actualizado. También tenga en cuenta que muchas personas usan máquinas virtuales en lugar de puertos de Windows de comandos * nix.
fuente
Si prefiere usar
grep
, en lugar defindstr
, hay una.exe
versión de archivo único en UnxUtils , por lo que es portátil y no hay necesidad de instalarlo, o usar algo como Cygwin.fuente
.zip
archivo de.exe
archivos. El único pequeño inconveniente es que las versiones son un poco antiguas.grep
para Windows: gnuwin32.sourceforge.net/packages/grep.htmPuede intentar instalar Chocolatey en Windows y, a través de eso, instalar la herramienta Gow . Esto te proporcionará
grep
en Windows.Gow
significan GNU en Windows. Proporciona utilidades de línea de comandos de Unix en Windows.fuente
Uso de bash
Uso de Cmd
donde
/b
significa b son la lista de directorios y archivosfuente
/B
,/R
y/C
OP no preguntó, mientras que mi respuesta da el equivalente exacto/b
es hacer que ladir
salida sea la misma que lals
salida. Si lo prueba, verá la diferencia. Por lo tanto, no es el equivalente exacto.Escribí una alternativa de Windows a grep usando el código Hybrid Batch / JScript. Escribí esto porque obtener los caracteres de escape directamente en el puerto grep GNU Win32 fue un verdadero dolor. Esta versión funciona mucho más como desea que funcione la versión GNU en Windows:
Siempre puedes encontrar la última versión en mi página de Gist para esto.
fuente
http://www.multireplacer.com
El programa de reemplazo múltiple se ha preparado para que se puedan llevar a cabo muchas funciones mediante el uso de parámetros de línea de comandos. El uso de la línea de comando se ve a continuación:
fuente
Todavía puede usar sus
grep
comandos Linux familiares y otros descargando esta herramienta UnxUtils y agregue su ubicación a suPATH
variable de entornofuente
2.4.2
pero gnuwin32 tiene uno más tarde2.5.4
Sugeriría usar busybox-w32 , ya que solo tiene un tamaño de aproximadamente 500 KB y se mantiene activamente.
Entonces, en su caso, en el símbolo del sistema, es:
Puede usar
doskey
el inicio de un símbolo del sistema mediante un archivo por lotes para hacer un comando, como:Luego puede usarlo
ls | grep root
en el símbolo del sistema.fuente
Si desea agregar lo más simple
grep
a su entorno de Windows, naveguec:\windows\system32
y agregue un pequeño script por lotes utilizando este comando:Ahora usted puede
que es realmente una mezcla de mierda que da miedo Entonces agregue otro script por lotes
ls
como se explica en esta publicaciónAhora las cosas parecen un poco familiares
HTH
fuente
Eso será equivalente rápido y sucio.
fuente