Home / LinuxUser / 2012 / 02 / In PDF- und PS-Dateien suchen

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Suchen und Finden

In PDF- und PS-Dateien suchen

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

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

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.

Tip a friend    Druckansicht Bookmark and Share
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: 162 Punkte bei 13 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Hits
Wertung: 206 Punkte (13 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...