Como sugiere el título, ¿cuál es la forma más rápida (precisa) de encontrar qué líneas de qué archivos coinciden con una cadena en particular.
Específicamente, estoy buscando .cpp
y .h
archivos.
Como sugiere el título, ¿cuál es la forma más rápida (precisa) de encontrar qué líneas de qué archivos coinciden con una cadena en particular.
Específicamente, estoy buscando .cpp
y .h
archivos.
Respuestas:
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 :)
El agente Ransack funciona de maravilla. Descárgalo aquí .
En los sistemas Unix, la gente probablemente usaría grep para hacer esto, entonces ¿por qué no usar Windows Grep?
Aquí hay una solución Powershell:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString
El -r
de gci
es 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-String
es -list
que 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
-filter "*.cpp","*.h"
que acepta varias extensiones? Esto debería leer-include ("*.cpp","*.hpp")
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. :-)
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.
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.