Полнотекстовая индексация
Существуют такие инструменты, как recoll , swish-e и sphinx, но вам нужно проверить, могут ли они поддерживать необходимый вам критерий поиска.
Recoll
Recoll - это личный инструмент полнотекстового поиска для Unix / Linux.
Swish-е
Swish-e - это быстрая, гибкая и бесплатная система с открытым исходным кодом для индексации коллекций веб-страниц или других файлов.
сфинкс
Sphinx позволяет вам быстро и легко либо выполнять пакетный индекс и искать данные, хранящиеся в базе данных SQL, хранилище NoSQL, либо просто файлы.
Grep
Я удивлен, что grep работает так медленно, как вы описываете, можете ли вы уменьшить количество файлов, в которых ведется поиск? Например, когда мне нужно искать только в исходных файлах один исполняемый файл (из многих в проекте), я передаю grep имена из команды, в которой перечислены исходные файлы для этой программы:
grep expression `sources myprogram`
sources
это программа, специфичная для моей среды разработки, но вы можете иметь (или иметь возможность создать) что-то эквивалентное.
Я предполагаю, что вы пробовали очевидные методы, такие как
find /foo/myproject -name "*.c" -exec fgrep -l searchtext
Я прочитал предположение, что -P
опция current grep
может значительно ускорить поиск.