equivalente comandos comando basicos windows command-line grep

basicos - comandos windows y ubuntu



LĂ­nea de comando grep recursiva de Windows (8)

Acabo de buscar un texto con el siguiente comando que me listó todos los nombres de archivo que contienen mi ''texto de búsqueda'' especificado.

C:/Users/ak47/Desktop/trunk>findstr /S /I /M /C:"search text" *.*

Necesito hacer un grep recursivo en Windows, algo así 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. No puedo instalar Cygwin , o herramientas de terceros como UnxUtils en este servidor, lamentablemente. Ni siquiera estoy seguro de poder instalar PowerShell. ¿Alguna sugerencia usando solo cmd.exe built-ins (Windows 2003 Server)?


Búsqueda recursiva de palabra import dentro de la carpeta src :

> findstr /s import ./src/*


Recomiendo una herramienta realmente genial:

utilidades nativas de Unix:

Solo desempaquételos y coloque esa carpeta en su variable de entorno PATH y ¡listo! :)

Funciona como un encanto, y hay mucho más que solo grep;)



Select-String funcionó mejor para mí. Todas las otras opciones enumeradas aquí, como findstr , no funcionaron con archivos grandes.

Aquí hay un ejemplo:

select-string -pattern "<pattern>" -path "<path>"

nota : esto requiere Powershell


findstr puede hacer búsquedas recursivas (/ S) y admite alguna variante de sintaxis de expresiones regulares (/ R).

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 occurrences 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 For full information on FINDSTR regular expressions refer to the online Command Reference.


findstr /spin /c:"string" [files]

Los parámetros tienen los siguientes significados:

  • s = recursivo
  • p = omitir caracteres no imprimibles
  • i = caso insensible
  • n = imprimir números de línea

Y la cadena para buscar es la que pones entre comillas después de /c:


for /f %G in (''dir *.cpp *.h /s/b'') do ( find /i "what you search" "%G") >> out_file.txt