¿Cuál es la forma más rápida (precisa) de buscar una cadena de texto en archivos en una máquina Windows?


Respuestas:


11

Notepad ++ tiene la opción 'buscar en archivos', que se encuentra en el menú 'Buscar'. Esto le permitirá buscar múltiples archivos en una carpeta (puede especificar la carpeta) y también le mostrará los números de línea de cada archivo . Puede alternar si se incluyen subcarpetas y carpetas ocultas en la búsqueda, y también le permitirá buscar con \ t \ n etc. y buscar con expresiones regulares si es necesario.

Notepad ++ es un editor de programadores de Windows (no un IDE) y también es de código abierto.

(Me doy cuenta de que lo más probable es que hayas oído hablar de notepad ++, pero solo lo menciono aquí como una opción en caso de que no conocieras esta característica en particular , y para otros que se topan con este hilo más adelante.

Salud :)


Sí, debo admitir que he usado Notepad ++ para esto antes.
Jon Cage

1
@ JonCage hay alguien en este hilo sevenforums.com/software/… que también habla como tú diciendo "Admito" cuando se trata de cosas útiles. Esa es una forma de hablar extremadamente extraña. Es posible que desee conocer a esa persona. Quizás tu gemelo.
barlop

Notepad ++ es genial. Otros editores de programadores como SciTE también tienen una funcionalidad similar.
TimothyAWiseman


5

Findstrsiempre funciona para mi Puede usar comodines de texto * o expresiones regulares para la cadena de búsqueda. Findstr /?para más


5

En los sistemas Unix, la gente probablemente usaría grep para hacer esto, entonces ¿por qué no usar Windows Grep?

http://www.wingrep.com/


Windows Grep puede volverse inestable en algún momento, pero es el programa de búsqueda más rápido que he usado.
yakatz

@yakatz ¡Gracias por mencionar la posible inestabilidad con Windows Grep, buscaré una herramienta grep / replace diferente!
pacoverflow

wingrep se suspende, sin embargo grepwin todavía está disponible y funciona muy bien.
Techturtle

3

Aquí hay una solución Powershell:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString

El -rde gcies de manera recursiva, y por supuesto es opcional, ya que son los dos filtros de extensión de archivo. Un parámetro útil de Select-Stringes -listque solo informará la primera instancia de una coincidencia en un archivo, en lugar de proporcionarle cada aparición por archivo.

¿Quizás quiera abrir instantáneamente cada archivo donde se encuentra una coincidencia? Bueno, el siguiente pequeño cambio a lo anterior es bastante útil, dependiendo de lo que tenga su asociación de archivos predeterminada como:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii


Estaba a punto de publicar lo mismo :)
Caleb Jares

¿Estás seguro de -filter "*.cpp","*.h"que acepta varias extensiones? Esto debería leer-include ("*.cpp","*.hpp")
mloskot

2

Al hacer una localización de algunos SW, uso DocFetcher para buscar las mismas cadenas en archivos traducidos previamente. Es gratuito y de código abierto, pero primero debe crear un índice. Solo inténtalo. :-)


1

Utilice "cadenas" proporcionadas por M $ . Compraron algunas utilidades muy buenas de Sysinternals hace unos años. No requiere instalación, simplemente colóquelo en la caja y ejecútelo para la sintaxis. ¡Fácil de usar y GENIAL!


1

Otra grepimplementación para Windows de los famosos desarrolladores de tortugas svn:

grepWin


0

Si está satisfecho en la línea de comandos / con Linux. ¿Puedo sugerir que busque instalar una versión de grep para Windows?

cygwin es una forma bastante práctica de hacerlo y le dará un entorno Linux completo, con bash shell y un terminal rxvt. De lo contrario, si solo desea las herramientas, hay gnuwin32, pero luego se quedará atascado con el indicador cmd.exe de Windows.

Microsoft en realidad tiene su propia versión de las herramientas de Unix como descarga, pero parecían bastante lentas en comparación con los puertos GNU cuando las probé. También los van a descartar con Windows 8.


0

Así es como busco cadenas de texto en el Registro de Windows o archivos en mi máquina con Windows XP. Supongamos que quiero encontrar la cadena "Enterprise" en un archivo de texto plano en la unidad c:, luego escriba la salida en un archivo llamado search_result.txt en c: \ windows \ temp

Abra un símbolo del sistema y luego escriba:

Findstr "Enterprise" c: *. txt> c: \ windows \ temp \ search_result.txt

La cadena que busca distingue entre mayúsculas y minúsculas. "Enterprise" y "enterprise" no encontrarán la misma cadena.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.