Я рекомендую добавить индексную машину. Рассмотрим Namazu из http://namazu.org. Когда мне это было нужно, начать было проще, чем Swish-e, ht: // dig, и я вполне доволен этим.
Если вам не нужны служебные данные индексатора, посмотрите на разветвление grep / egrep. Как только объем текста перейдет в несколько мегабайт, это будет значительно быстрее, чем сканирование исключительно на Perl, например:
open GREP, "find $dirlist -name '$filepattern' | xargs egrep '$textpattern' |"
or die "grep: $!";
while (<GREP>) {
...
}
Бонус: используйте соглашения об именах файлов, такие как даты / теги / и т. Д., Чтобы сократить набор файлов до grep.
Неуклюжий find ... | xargs ...
предназначен для обхода ограничений на размер оболочки при расширении с использованием подстановочных знаков, которые могут возникнуть при работе с большими архивами.