Me encuentro grepping la misma base de código una y otra vez. Si bien funciona muy bien, cada comando tarda unos 10 segundos, por lo que estoy pensando en formas de hacerlo más rápido.
Entonces, ¿puede grep
usar algún tipo de índice? Entiendo que un índice probablemente no ayudará para expresiones regulares complicadas, pero uso principalmente patrones muy simples. ¿Existe un indexador para este caso?
EDITAR: Sé sobre ctags y similares, pero me gustaría hacer una búsqueda de texto completo.
Respuestas:
¿Qué pasa con cscope ?
Permite buscar código para:
fuente
Indización de texto completo
Existen herramientas como recoll , swish-e y sphinx, pero tendría que verificar si pueden admitir el tipo de criterios de búsqueda que necesita.
Recoll
Swish-e
Esfinge
grep
Me sorprende que grep sea tan lento como lo describe, ¿puede reducir la cantidad de archivos que se buscan? Por ejemplo, cuando solo necesito buscar en los archivos de origen un ejecutable (de muchos en un proyecto), le doy a grep los nombres de un comando que enumera los archivos de origen para ese programa:
sources
es un programa específico para mi entorno de desarrollo, pero es posible que tenga (o pueda construir) algo equivalente.Supongo que has probado técnicas obvias como
He leído una sugerencia de que la
-P
opción actualgrep
puede acelerar significativamente las búsquedas.fuente
grep, no. Pero hay varios programas que usan índices y están destinados a la base de código.
ctags
(hay una versión provista con vim),etags
(pensada para usar con emacs),global
(más independiente del editor) son las que estoy pensando ahora pero probablemente hay otras.fuente
Puede copiar su base de código en un disco RAM.
fuente
si quieres usar un motor de búsqueda de texto completo ... usa uno:
fuente
No, no lo creo. Pero puede haber una solución simple: intente ack. Creo que si le da una oportunidad, la encontrará significativamente más rápido que grep, requiere cadenas de búsqueda más cortas para obtener mejores resultados de búsqueda y tiene muchas características deseables, mientras usa los mismos interruptores de comando. Una cosa que lo hace más rápido (aunque no está indexado) es que ignora muchas más cosas que no desea buscar. Está escrito en Perl y usa las expresiones regulares de Perl (y, por lo tanto, también tiene puertos Mac y Windows).
http://betterthangrep.com/
fuente