Schnelles Durchsuchen von Tausenden von Textdateien nach Zeichenfolgen unter Linux

Ich habe kürzlich ~ 30 GB alter Outlook-PST-Dateien mit dem Tool readpst in Textdateien konvertiert .

Das Tool erstellt für jeden E-Mail-Thread ein neues Verzeichnis, in dem es eine Textdatei (für den mit dem Thread verknüpften Text) und alle Anhänge ablegt.

Dadurch konnte ich Anhänge schnell finden, aber jetzt möchte ich in der Lage sein, die vielen zehntausend Textdateien (dh E-Mail-Threads) schnell nach Zeichenfolgen unterschiedlicher Länge zu durchsuchen. Die Verwendung von findund grepist viel zu langsam, daher suche ich vermutlich nach einer Möglichkeit, die Dateien zuerst zu indizieren.

Ich arbeite mit Linux und bin mit der Kommandozeile vertraut. Ich würde es vorziehen, die Daten offline zu halten, anstatt sie in ein Online-Tool hochzuladen. Ich habe keinen Zugriff auf eine Instanz von Outlook, daher kann ich die ursprünglichen PST-Dateien nicht einfach laden.

Schließlich sollte jedes empfohlene Tool Open Source/gratis sein.

Wäre es eine Option für Sie , die PST-Dateien in das mbox-Format zu konvertieren ? Sie könnten diese dann in Ihr IMAP-Konto (falls vorhanden) importieren, wo der IMAP-Server sie indizieren sollte, und sie so mit Ihrem E-Mail-Client durchsuchen können. Nur eine grobe Idee, nicht getestet.
Hier ist ein Gedanke. Wenn Sie Ihre Festplatte gegen eine SSD austauschen, erhalten Sie eine 5-fache Geschwindigkeitssteigerung für jede Lösung. Wie viele Kerne und welche Geschwindigkeit hat Ihre CPU?

Antworten (4)

Ich verwende ein Windows-Programm namens Everything von voidtools.com. Es ist nicht das, was Sie wollen (es ist nur Windows und nur Ordner- und Dateinamen), aber es ist schnell und flexibel, also habe ich es als Ausgangspunkt verwendet, um zu sehen, was sonst noch verfügbar ist. Eine Suche bei alternativeto.net nach Everything, nach Linux, ergibt insgesamt 5 Treffer. Suchen Sie auf Alternativeto.net

Davon sind alle 5 Open Source. 3 behaupten, auch Inhalte zu durchsuchen: Regain, SearchMonkey und Tracker. Ein viertes, Catfish, ist unklar, ob es Inhalte durchsucht; es wird als Such-Frontend beschrieben.

Edit: Der Link zur Recover-Website auf alternativeto.net ist veraltet, glaube ich. Diejenige , die ich gefunden habe und die funktioniert, ist: Regain website Beachten Sie, dass sie plattformübergreifend ist. Behauptet, sehr schnell zu sein, weil es einen Index verwendet. Unter Windows muss es installiert werden. Keine Ahnung von Linux.

Der Link zur SearchMonkey-Website lautet: SearchMonkey-Website Es ist auch plattformübergreifend. Es erfordert keine Installation unter Windows. Es scheint keinen Index zu verwenden, ist also möglicherweise nicht schneller als grep.

Ich habe Regain nicht verwendet, aber SearchMonkey ausprobiert. Scheint in Ordnung. Wieder unter Windows.

Edit2 (19.01.16): Ich habe ein anderes Programm wiederentdeckt, das ich zuvor heruntergeladen hatte, DocFetcher. Ich habe einige Tests unter Windows durchgeführt und glaube, dass es das tut, was Sie wollen. Es ist kostenlos, Open Source und plattformübergreifend. Es durchsucht Dateien und zeigt den relevanten Klartext an. Es unterstützt mehrere Dateitypen, einschließlich Outlook pst. Es wird ein Index generiert, mit Benutzerkontrolle über den Pfad, der indiziert wird, sodass Sie nur Ihre PST-Datei indizieren können. Die Indizierung kann etwas dauern, geht dann aber recht flott. Es braucht Java. Es ist verfügbar unter: DocFetcher auf Sourceforge Seine Website, ebenfalls auf Sourceforge, befindet sich auf der DocFetcher-Website . Die Kommentare zu Sourceforge sind im Allgemeinen sehr positiv.

VoidTools Everything sucht nach Dateinamen, nicht nach Dateiinhalt. Die Antwort scheint ein Google-Suchergebnis zu sein, von dem abgeraten wird. Sie haben wenig bis gar keine Erfahrung mit den von Ihnen empfohlenen Programmen, wovon ebenfalls abgeraten wird.
@Thomas - Ich habe alles explizit und korrekt als Windows und nur Suche nach Datei- / Ordnernamen identifiziert. Ich habe ausdrücklich und deutlich angegeben, dass ich Alternativeto.net für eine Suche verwendet habe. Ich habe Programme identifiziert, die die Anforderungen des OP erfüllen könnten. Ich habe sie nicht "empfohlen". Bisher ist meine Antwort, so unzureichend Sie sie auch finden mögen, die einzige, die gegeben wird. Das OP kann diese Programme sicherlich ausprobieren und einen Kommentar abgeben.
Ich verstehe das Konzept dieses Ansatzes nicht: Sie kennen ein Programm, das nach Dateinamen suchen kann , googeln Sie dann nach Alternativen und finden Sie Programme, die nach Dateiinhalten suchen ? Warum nicht mit einem Programm beginnen, das Dateiinhalte durchsucht und nach Alternativen dazu sucht? Auf dieser Seite geht es um "Empfehlungen" für Software, also warum empfehlen Sie nicht etwas?
DocFetcher sieht vielversprechend aus - ich werde es mir ansehen. Wenn es tut, was es sagt, akzeptiere ich dies als die beste Antwort.
Search Monkey war mein erster Gedanke, außerdem denke ich, dass es keinen Index aufbaut. Für Windows war der Copernicus-Desktop früher der beste (und erstellt einen Index), obwohl ich Agent Ransack bevorzuge

Da Sie unter Linux arbeiten und bereits grep/find verwenden, leiten wir sie an xargs weiter und verwenden die Parallelitätsoption, um die Dinge zu beschleunigen. Es hängt davon ab, wie viel Rechenleistung Sie auf Ihrem Computer haben, sollte aber schneller sein. Zum Beispiel machst du wahrscheinlich etwas Ähnliches wie:

grep -i "<string>" /dir/path

Leiten Sie den Befehl an xargs und -ngeben Sie mit an, wie viele gleichzeitige Prozesse Sie ausführen möchten (4 ist hier nur ein Beispiel, könnte 2 oder 200 sein):

grep -i "<string>" /dir/path | xargs -n 4

Es wird die Dinge für Sie beschleunigen. Wenn Sie sich nicht sicher sind, wie sehr es die Dinge beschleunigen wird, können Sie Folgendes tun und die Fertigstellungszeiten vergleichen:

time grep -i "<string>" /dir/path

time grep -i "<string>" /dir/path | xargs -n 4
Wie funktioniert das xargs -n 4?
@ wb9688 es führt den Befehl gleichzeitig so oft aus, wie nach dem -n angegeben, also letztendlich schneller.
Danke für die Antwort. Ich hatte diesen Vorschlag bereits ausprobiert, aber die Wirkung war durch die knarrend alte Hardware begrenzt, auf der ich ihn ausführe :)
Was ist mit dem Mounten der Dateien im Speicher und dem Ausführen?
Wie wäre es, wenn Sie es auf einer anderen, nicht so knarrenden alten Hardware ausführen würden? :-)

Ich habe keine Erfahrung mit dem Konvertieren von PST-Dateien von Outlook, aber wenn Sie diese E-Mails in das Maildir-Format bringen können, gibt es ein hervorragendes Tool namens notmuch, das genau das zu tun scheint, was Sie fragen. Es indiziert Ihre E-Mails und ermöglicht es Ihnen, sie schnell zu durchsuchen. Es gibt mehrere Frontends und Clients, die ebenfalls darauf ausgelegt sind, damit zu arbeiten. Lesen Sie hier darüber: NotMuchMail.org

Der separate Dateimodus von readpstgibt im Wesentlichen etwas in der Nähe eines Maildirs wieder. (Die fehlenden Tags dürfen kein Problem darstellen, wenn Ihre Aufgabe darin besteht, zu suchen.)

Da Sie ein richtiges Betriebssystem verwenden und keine Angst vor der Befehlszeile haben, können wir davon ausgehen, dass Sie auch über Programmierkenntnisse verfügen?

Wenn ja ... Ich habe früher ein Rouge-Archiv eines superspezifischen E-Mail-Listenservers ausgeführt. Würde von Zeit zu Zeit Jobs ausführen, die mbox-Mail in maildir und eine Datei für jede Nachricht konvertieren, dann die Dateien scannen, die Header entfernen und einen Schlüsselwortindex in einer MySQL-Datenbank speichern.

Sie könnten ähnlich vorgehen - die einzelne Datei für jede Nachricht ist fertig, Sie müssen nur den Code schreiben, um 1) die Kennung / den Speicherort des Nachrichten-Threads zu verfolgen, den Sie verarbeiten, und 2) alle Wörter einzufügen eine Schlüsselwort-/Nachrichten-ID-DB-Tabelle mit mysql, mariadb, mongo, was auch immer Sie sich wohl fühlen.