Suche im Verzeichnis

Will man ein ganzes Archiv durchforsten, möchte man nicht jedes Dokument einzeln öffnen und darin suchen. Hier bewähren sich wieder die Werkzeuge auf der Kommandozeile. Der erste Kandidat erfordert etwas Bash-Know-how – er besteht aus eine Kombination von Pdftotext und Grep mit einer Pipe in einer For-Schleife:

$ for datei in $(ls *.pdf); do pdftotext $datei - | grep --color Suchstring; done

Zunächst listet das Kommando mittels ls alle PDF-Dateien im aktuellen Verzeichnis auf. Die For-Schleife arbeitet diese Liste dann zeilenweise ab. Pdftotext wandelt jede PDF-Datei aus der Liste in einfachen Text um und schickt die Ausgabe auf die Standardausgabe. Dafür sorgt der zweite Parameter (-). Grep übernimmt die Ausgabe als Eingabe und stöbert darin anschließend nach dem Suchstring.

In den Tests zeigte sich, dass das kleine Skript flink und zuverlässig arbeitet. Pdftotext kommt problemlos mit den gebräuchlichen Encodings ISO 8859-1, 8859-15 und UTF-8 zurecht. Über die Option -enc Encoding wählen Sie bei Bedarf explizit die gewünschte Zeichenkodierung zur Extraktion aus.

Sind viele Treffer zu erwarten, hilft das Kommando less, um durch die Ergebnisliste zu blättern. Sie fügen es einfach über eine weitere Pipe an die obige Kommandozeile an. Da Less die farbliche Hervorhebung der Suchtreffer nicht übernimmt, können Sie dabei die grep-Option --color im Aufruf streichen.

Als Kandidat Nummer Zwei präsentiert sich das bereits erwähnte Werkzeug Pdfgrep [8]. Es ist zwar nicht auf jeden Linux-System vorhanden, steht aber beispielsweise als offizielles Debian-Paket bereit. Analog zu Grep durchsucht es die übermittelte Dateiliste nach dem angegebenen Textfragment:

$ pdfgrep Suchstring Dateiliste

Alle Suchtreffer hebt das Tool automatisch farbig hervorgehoben. Über die Option --color <§§I>Wert<§§I> verändern Sie dieses Verhalten. Als Wert dazu kennt Pdfgrep drei Varianten: always hebt immer hervor, never schaltet die Hervorhebung ab und auto hebt nur hervor, wenn die Ausgabe auf einem Terminal erfolgt.

Als hilfreich erweisen sich auch die Optionen -n und -i. Mit -n gibt Pdfgrep zusätzlich die Seite aus, auf der der Treffer erfolgte, -i sucht unabhängig von der Groß- und Kleinschreibung. Damit lässt sich beispielsweise relativ unkompliziert in elektronischen Rechnungen stöbern.

Ein Beispiel zeigt Abbildung 8. In der ersten Spalte der Ausgabe steht der Dateiname (in Violett), danach die Seite, auf der das Fragment gefunden wurde (in Grün) und zum Schluss das gefundene Fragment (in Rot). Der Parameter -C 15 sorgt dafür, dass Pdfgrep den Kontext um den Suchtreffer mit ausgibt, wobei der Wert 15 diesen Kontext auf 15 Zeichen festsetzt. Ohne diesen Parameter gibt pdfgrep nach Möglichkeit die ganze Zeile aus, in der es das Fragment gefunden hat.

Abbildung 8: Pdfgrep gibt Suchtreffer mit Dokument und Seitennummer aus.

Pdfgrep unterstützt auch erweiterte reguläre Ausdrücke. Sie können damit auch nach mehreren Kriterien suchen, indem Sie die Anfrage in einen passenden regulären Ausdruck überführen. In Abbildung 9 etwa sucht Pdfgrep in allen PDF-Dokumenten nach einer Zeichenkette, die mit der Produktbezeichnung "NanoStation" beginnt, gefolgt von mindestens einem weiteren Buchstaben (.+) sowie der Seriennummer des Gerätes, beginnend mit "156D1". Die Klammern dienen der Gruppierung der einzelnen Worte.

Abbildung 9: So sieht in Pdfgrep ein Suchergebnis unter Verwendung regulärer Ausdrücke aus.

Bilddaten

Auch einzelne Bilder lassen sich bei Bedarf vom Dokument separieren. Für Postscript gibt es dazu psrip. Für PDF steht (als Bestandteil des Pakets poppler-utils) das Werkzeug pdfimages zur Verfügung. Beide Programme haben wir bereits in Teil 6 dieser Serie [9] ausführlich vorgestellt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Suche in komprimierten Dateien und Archiven
    Über die Kommandozeile flink in komprimierten Dateien und Archiven zu suchen, spart viel Zeit. Die richtigen Tools dazu bringt praktisch jedes Linux-System von Haus aus mit.
  • Schöner finden
    Im Ordner "Bank" liegen die Kontoauszüge der letzten drei Jahre, und Sie fragen sich, wann Sie im örtlichen Elektronikmarkt den neuen Monitor gekauft haben. Über manuelles Öffnen der Dateien im PDF-Betrachter und dessen Suchfunktion finden Sie das in wenigen Minuten heraus, trotzdem ist die Vorgehensweise umständlich. Mit "pdfgrep" erhalten Sie die Antwort sofort. Einmal dabei, bietet es sich auch an, LibreOffice-Dokumente zu durchsuchen.
  • Angetestet
    Markdown-Editor CuteMarkEd 0.11.2, Konsolen-Bildbetrachter Fim 0.5, Suchwerkzeug Pdfgrep 1.4.1, CSV-Datei-Viewer Tabview 1.4.2.
  • Bild und Druck
    Durch seine reiche Ausstattung an Werkzeugen eignet sich Linux wie kaum ein anderes Betriebssystem zum Umgang mit Postscript- und PDF-Dokumenten. Wir stellen die besten Tools zur Anzeige und Konvertierung vor.
  • Schöner drucken
    Linux setzt beim Thema Drucken auf das Common Unix Printing System (CUPS) und auf das Dateiformat PostScript. Darüber mehr zu erfahren, kann nützlich sein und für mehr Komfort beim Drucken sorgen.
Kommentare
Suchen in Farbe
Markus Berlin, Freitag, 20. Januar 2012 09:37:48
Ein/Ausklappen

Vielen Dank für den schönen Artikel! Folgeartikel zu OCR oder auch zu genaueren PDF/PS-Innereien fände ich großartig. :)

Nur zwei Anmerkungen:

(1)

$ for datei in $(ls *.pdf); do pdftotext $datei - | grep --color Suchstring ; done

welchen Vorteil hat das gegenüber:

$ for datei in *.pdf; do pdftotext $datei - | grep --color Suchstring ; done

(2)

"""Da Less die farbliche Hervorhebung der Suchtreffer nicht übernimmt, können Sie dabei die grep-Option --color im Aufruf streichen."""

less übernimmt die Hervorhebung, wenn man ihm die Option "-R" gönnt.

Viele Grüße



Bewertung: 226 Punkte bei 77 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...