ubuntuusers.de

PDF Durchsuchen in der Shell

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo ich möchte in der Shell gerne PDF Dateien durchsuchen lassen und (optimalerweise) das Ergebnis als Seite zurück bekommen. Das ich z.b. den Suchbegriff "suchmich" eingebe und das ganze Verzeichnis inkl. aller Dateien durchsucht wird. Das Ergebnis bzw. die Seite in der das Wort vorkommt sollte mir zurück gegeben werden. Geht sowas? Oder das ich PDF Dateien nach Schlüsselwörter zerlege und in eine CSV umwandel?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9775

Wohnort: Münster

Teillösung: Eine einfache Suche nach Begriffen gelingt mit den Programmen strings und grep. strings kann jede Datei nach druckbaren Zeichenketten durchsuchen, also auch PDF. grep filtert nach Zeichenketten. Zu den umfangreichen Möglichkeiten dieser Programme konsultiere das feine Manual:

1
2
man strings
man grep

Das Grundmuster für eine Lösung Deines Problems wäre z.B.

1
strings -f * | grep suchmich

aufgerufen in dem zu untersuchenden Verzeichnis. Wenn es hier sehr viele Dateien gibt, verwendest Du besser xargs. Dies zeigt Dir allerdings nur die Datei(en), in denen der Suchbegriff vorkommt und ggf. (Option von grep) die Umgebung des Vorkommens.

Eine Volltextsuche kann sehr lange dauern und erhebliche Ressourcen binden!

Anderer Ansatz: grep kann auch Binärdateien durchsuchen, gibt dann aber nur ein Ja/Nein-Ergebnis zurück.

Um in einem PDF die Seite zu finden, benötigst Du ein Programm, welches die Seitenstruktur versteht.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Ob ein Suchbegriff in einem PDF vorkommt kannst du so testen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# PDF definieren
PDF="/pfad/dein.pdf"

# Schleife, die jede Seite eines PDFs durchgeht. Die Seitenanzahl wird aus pdfinfo extrahiert.
for i in $(seq 1 $(pdfinfo $PDF | awk '/^Pages/ { print $2 }')); do
  # Konvertieren der aktuellen (und NUR der aktuellen) Seite des PDFs in Text und suchen nach dem Suchbegriff
  if pdftotext -f $i -l $i $PDF | grep "Suchbegriff"; then
    echo "Suchbegriff in Seite $i gefunden"
  fi
done

pdfinfo und pdftotext findest du im Paket poppler-utils.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11267

Wohnort: München

gnude schrieb:

Hallo ich möchte in der Shell gerne PDF Dateien durchsuchen lassen und (optimalerweise) das Ergebnis als Seite zurück bekommen. Das ich z.b. den Suchbegriff "suchmich" eingebe und das ganze Verzeichnis inkl. aller Dateien durchsucht wird. Das Ergebnis bzw. die Seite in der das Wort vorkommt sollte mir zurück gegeben werden. Geht sowas?

Probier es mal mit pdfgrep - mit Ausgabe der Seite (und der Zeile mit dem Treffer) wäre das z.B.:

pdfgrep -n "suchmich" *.pdf

Bzw. rekursiv in einem Verzeichnis und seinen Unterordnern:

pdfgrep -rn "suchmich" 

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

gnude schrieb:

... Das Ergebnis bzw. die Seite in der das Wort vorkommt sollte mir zurück gegeben werden.

Da dachte ich auch an pgrep - die Details dazu hat seahawk1986 ja schon angegeben.

Oder das ich PDF Dateien nach Schlüsselwörter zerlege und in eine CSV umwandel?

Das wäre dann ein 2. Schritt: den Text der PDFs zu analysieren und dann (als logische Auswertung !) in ein CSV umzuwandeln.

Wenn Du dazu konkrete Hilfestellung möchtest, müsstest Du mal eine Beispieldatei geben, anhand der wir die Details angucken können.

LG,

track

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Vielen Dank. Es sind gute Ideen dabei die mich inspirieren damit zu experimentieren!

Antworten |