Недавно я преобразовал ~ 30 ГБ старых PST-файлов Outlook в текстовые файлы с помощью инструмента readpst .
Инструмент создает новый каталог для каждой ветки электронной почты, внутри которого размещает текстовый файл (для текста, связанного с веткой) и любые вложения.
Это позволило мне быстро находить вложения, но теперь я хотел бы иметь возможность быстро искать во многих десятках тысяч текстовых файлов (т. е. цепочек сообщений электронной почты) строки различной длины. Использование find
и grep
слишком медленное, поэтому я, вероятно, ищу способ сначала проиндексировать файлы.
Я работаю на Linux и мне удобно использовать командную строку. Я бы предпочел хранить данные в автономном режиме, а не загружать их в онлайн-инструмент. У меня нет доступа к экземпляру Outlook, поэтому я не могу просто загрузить исходные файлы .pst.
Наконец, любой рекомендуемый инструмент должен быть открытым/бесплатным.
Я использую программу для Windows под названием Everything с сайта voidtools.com. Это не то, что вам нужно (это только для Windows и только имена папок и файлов), но это быстро и гибко, поэтому я использовал его в качестве отправной точки, чтобы посмотреть, что еще доступно. Поиск на сайте www.alternativeto.net по запросу Everything для Linux дает всего 5 совпадений. Искать на Alternativeto.net
Из них все 5 с открытым исходным кодом. 3 также претендуют на поиск содержимого: Regain, SearchMonkey и Tracker. Четвертый, Catfish, неясно, ищет ли он контент; это описывается как интерфейс поиска.
Редактировать: я считаю, что ссылка на сайт восстановления на сайте alterto.net устарела. Тот, который я нашел, который работает, это: Восстановить веб-сайт . Обратите внимание, что это кросс-платформа. Утверждается, что он очень быстрый, потому что использует индекс. В Windows он должен быть установлен. Не знаю насчёт линукса.
Ссылка на веб-сайт SearchMonkey: Веб- сайт SearchMonkey Он также является кросс-платформенным. Не требует установки в Windows. Похоже, он не использует индекс, поэтому может быть не быстрее, чем grep.
Я не использовал Regain, но попробовал SearchMonkey. Кажется, все в порядке. Опять же, в Windows.
Edit2 (19.01.16): я заново открыл для себя другую программу, которую я ранее загрузил, DocFetcher. Я провел несколько тестов на нем под Windows, и я считаю, что он делает то, что вы хотите. Это бесплатно, с открытым исходным кодом и кроссплатформенно. Он будет искать внутри файлов и отображать соответствующий простой текст. Он поддерживает несколько типов файлов, включая Outlook PST. Он создаст индекс с пользовательским контролем над индексируемым путем, поэтому вы можете индексировать только свой файл pst. Индексация может занять некоторое время, но тогда она будет достаточно быстрой. Ему нужна Ява. Он доступен по адресу: DocFetcher на Sourceforge . Его веб-сайт, также на Sourceforge, находится на веб-сайте DocFetcher . Комментарии на Sourceforge, как правило, очень положительные.
Поскольку вы работаете в Linux и уже используете grep/find, давайте направим их в xargs и воспользуемся параметром параллелизма, чтобы ускорить процесс. Это будет зависеть от того, сколько вычислений у вас есть на вашем компьютере, но должно быть быстрее. Например, вы, вероятно, делаете что-то похожее на:
grep -i "<string>" /dir/path
Передайте команду xargs и используйте, -n
чтобы указать, сколько одновременных процессов вы хотите запустить (4 здесь просто пример, может быть 2 или может быть 200):
grep -i "<string>" /dir/path | xargs -n 4
Это ускорит ваши дела. Если вы не уверены, насколько это ускорит работу, вы можете сделать следующее и сравнить время выполнения:
time grep -i "<string>" /dir/path
time grep -i "<string>" /dir/path | xargs -n 4
xargs -n 4
работает?У меня нет опыта преобразования PST-файлов Outlook, но если вы можете получить эти электронные письма в формате maildir, есть отличный инструмент под названием notmuch, который, похоже, делает именно то, что вы просите. Он проиндексирует вашу почту и позволит вам быстро искать ее. Существует несколько интерфейсов и клиентов, предназначенных для работы с ним. Читайте об этом здесь: NotMuchMail.org
readpst
дает по сути что-то близкое к Maildir. (Отсутствующие теги не должны быть проблемой, если ваша задача состоит в поиске.)Поскольку у вас нормальная операционная система и вы не боитесь командной строки, можем ли мы предположить, что у вас есть навыки программирования?
Если да... Я имел обыкновение запускать румяный архив рассылки электронной почты по суперспецифическим темам. Периодически запускал задания, конвертируя почту mbox в maildir и файл для каждого сообщения, затем сканировал файлы, избавлялся от заголовков и сохранял индекс ключевых слов в базе данных mysql.
Вы можете сделать то же самое - отдельный файл для каждого сообщения готов, вам просто нужно написать код для 1) отслеживания идентификатора/местоположения потока сообщений, который вы обрабатываете, и 2) вставки всех слов в таблица базы данных идентификаторов ключевых слов/сообщений, использующая mysql, mariadb, mongo, все, что вам удобно.
Иззи
кибернард