Быстрый поиск текста в файлах в каталоге в Unix? - PullRequest
4 голосов
/ 31 января 2011

Есть ли хорошее решение для поиска, аналогичного

find . -name "*.*" | xargs grep "some text"

, но с гораздо более быстрым поиском, благодаря автономной индексации. Было бы неплохо поддерживать подстановочные знаки или легкие регулярные выражения, но было бы неплохо даже выполнить поиск необработанного текста, который мог бы работать очень быстро благодаря автономной предварительной обработке.

Ответы [ 5 ]

2 голосов
/ 12 июля 2013

Я думаю, что это отличный и быстрый вариант

grep -rl "string" /path
1 голос
/ 31 января 2011

Это может быть излишним для ваших целей, но Beagle позволяет выполнять очень быстрый поиск локальных файлов. Обычно оно продается как настольное приложение, но на самом деле это просто демон, который может отвечать на запросы из командной строки, используя beagle-query .

0 голосов
/ 30 июля 2014

grep -Ri --include = "*. Xml" TEXT / directory /

  • при этом выполняется поиск текста 'TEXT' во всех файлах xml в определенном каталоге, но это может быть не так быстро, каквы ожидаете
0 голосов
/ 20 мая 2013

Recoll имеет приличный механизм индексации для локальных файлов, но поставляется с графическим интерфейсом.

0 голосов
/ 31 января 2011

Python

from __future__ import print_function
import glob
for name in glob.glob('*.*'):
    with open(name,'r') as aFile:
        for n, text in enumerate(aFile):
            if 'some text' in text:
                print( name, n, text )

У вас есть очень полная библиотека регулярных выражений в модуле re.

Вместо того, чтобы печатать результаты, вы можете создать базу данных shelve или некоторые другие.другая структура индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...