[[Vorlage(Getestet, bionic focal)]] {{{#!vorlage Wissen [:Anwendungen_hinzufügen:Programme installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Mit pdfgrep ('''g'''et '''r'''egular'''e'''x'''p'''ression) lassen sich [:PDF:]-Dateien, welche Text enthalten, nach Suchmustern durchsuchen. Diese Suchmuster werden „regular expressions“ genannt. Sie sind vielfältig einsetzbar und werden zum Beispiel auch von grep verwendet. Weitere Informationen zu Regular Expressions finden sich im Artikel [:grep:] und im Wikipedia-Artikel [wikipedia:Regulärer Ausdruck:]. = Installation = Zur Installation [1] ist folgendes Paket notwendig: {{{#!vorlage Paketinstallation pdfgrep, universe }}} = Benutzung = Mit pdfgrep lassen sich eine oder mehrere PDF-Dateien nach Zeichenketten durchsuchen, die zum angegebenen Muster passen. Der allgemeine Aufruf erfolgt über den Befehl [2]: {{{#!vorlage Befehl pdfgrep OPTIONEN MUSTER DATEI(EN) }}} Pdfgrep arbeitet ähnlich wie [:grep:] – allerdings nicht auf Zeilen-, sondern auf Seitenbasis. Darüber hinaus bietet pdfgrep einige Zusatzfunktionen: * Satt einer Datei kann auch ein Ordner angegeben werden. Dieser wird dann von pdfgrep nach PDF-Dateien, welche die angegebene Zeichenkette enthalten, durchsucht. * Suchtreffer können farblich hervorgehoben werden. * Als weiteres Feature kann mit der entsprechenden Option die Seitenzahl ausgegeben werden, auf welcher der Treffer erfolgt ist. * pdfgrep kann angewiesen werden, Groß- und Kleinschreibung zu ignorieren. == Optionen == {{{#!vorlage Tabelle Übersicht über die anwendbaren Optionen +++ Kurzform Langform mit ZUSATZANGABEN Beschreibung +++ `-i` `--ignore-case` Ignoriert Groß- und Kleinschreibung. +++ `-H` `--with-filename` Gibt den Dateinahmen für jede Übereinstimmung aus (Standardeinstellung beim Durchsuchen von mehreren Dateien). +++ `-h` `--no-filename` Der Dateiname wird bei der Ausgabe unterdrückt (Standardeinstellung beim Durchsuchen von nur einer Datei). +++ `-n` `--page-number` Gibt bei jeder Übereinstimmung die Seitennummer, auf welcher sie gefunden wurde, aus. +++ `-r` `--recursive` Durchsucht Verzeichnisse rekursiv. Folgt [:ln/#Symbolische-Verknuepfungen:symbolischen Verknüpfungen] allerdings nur, wenn sie im Befehl angegeben wurden. +++ `-R` `--dereference-recursive` Wie `-r`, folgt aber allen [:ln/#Symbolische-Verknuepfungen:symbolischen Verknüpfungen]. +++ `--exclude=GLOB` Überspringt Dateien, welche `GLOB` heißen bzw. `GLOB` im Namen beinhalten. Diese Option hat Vorrang vor der Option `--include`.[[BR]]Hinweis: Die Optionen `--include` und `--exclude` lassen sich nur auf Dateien anwenden, die über die Option `--recursive` gefunden wurden, und nicht auf Dateilisten. +++ `--include=GLOB` Durchsucht nur Dateien, welche `GLOB` heißen bzw. `GLOB` im Namen beinhalten. Standardeinstellunge ist `*.pdf`. Weitere Informationen unter `--exclude`. +++ `-c` `--count` Unterdrückt die normale Ausgabe. Stattdessen wird lediglich die Anzahl der Übereinstimmungen pro Eingabedatei ausgegeben. +++ `-C` `--context ANZAHL` Gibt um jede Übereinstimmung die angegebene `ANZAHL` von Zeichen aus dem Kontext mit aus. +++ `-q` `--quiet` Unterdrückt die normale Ausgabe auf der Standardausgabe (stdout). Lediglich Fehlermeldungen werden angezeigt und Exit-Codes zurückgegeben. +++ `--color WANN` Gibt Dateinamen, Seitenzahlen und Suchübereinstimmungen in Farbe aus. Möglich für `WANN` sind folgende Werte: `always` gibt immer in Farbe aus, auch wenn die Standardausgabe (stdout) nicht im Terminal erfolgt; `never` verwendet niemals Farben; `auto` gibt nur im Terminal in Farbe aus (Standardeinstellung ist `auto`). +++ `--unac` Entfernt Akzente und Ligaturen aus Suchmuster und den PDF-Dokumenten. Dieses Feature ist hilfreich, wenn z.B. nach einem Wort mit 'ae' gesucht werden soll, aber die PDF-Datei stattdessen nur ein Einzelzeichen 'æ' verwendet. Diese Option ist experimentell und nur verfügbar, wenn pdfgrep mit unac-Unterstützung kompiliert worden ist. +++ `--help` Gibt eine kleine Übersicht über die Optionen aus. +++ `-V` `--version` Gibt Versionsinformationen aus. }}} == Beispiele == * Durchsucht die Dateien '''Beispiel_1.pdf''' und '''Beispiel_2.pdf''' im aktuellen Arbeitsverzeichnis '''~/Dokumente''' nach der exakten Zeichenkette `Ubuntu`. Die Treffer werden unter Angabe des Dateinamens auf der Standardausgabe ausgegeben. {{{#!vorlage Befehl cd ~/Dokumente pdfgrep Ubuntu Beispiel_1.pdf Beispiel_2.pdf }}} * Durchsucht alle Dateien mit der Dateiendung `*.pdf` (`*` = unabhängig vom genauen Namen) im Verzeichnis '''~/Dokumente''' nach der Zeichenkette `ubuntu`, unabhängig von Groß- und Kleinschreibung. Die Treffer werden unter Angabe des Dateinamens auf der Standardausgabe ausgegeben. {{{#!vorlage Befehl pdfgrep -i ubuntu ~/Dokumente/*.pdf }}} * Durchsucht rekursiv (`-r`) das Verzeichnis '''~/Dokumente''' sowie dessen Unterordner nach PDF-Dateien, in welchen die Zeichenkette `ubuntu` auftritt, unabhängig von Groß- und Kleinschreibung (Option `-i`). Die Treffer werden unter Angabe des Dateinamens und der Seitennummer (Option `-n`) auf der Standardausgabe ausgegeben. {{{#!vorlage Befehl pdfgrep -rni ubuntu ~/Dokumente }}} * Durchsucht rekursiv (`-r`) das Verzeichnis '''~/Dokumente''' sowie dessen Unterordner nach PDF-Dateien, in welchen die Zeichenkette `ubuntu` auftritt, unabhängig von Groß- und Kleinschreibung (Option `-i`). Die genaue Ausgabe der Treffer wird unterdrückt, stattdessen wird lediglich die Anzahl der Treffer pro Datei (Option `-c`) auf der Standardausgabe ausgegeben. {{{#!vorlage Befehl pdfgrep -ric ubuntu ~/Dokumente }}} * Durchsucht rekursiv (`-r`) das Verzeichnis '''~/Dokumente''' sowie dessen Unterordner nach PDF-Dateien, in welchen die Zeichenkette `ubuntu` auftritt, unabhängig von Groß- und Kleinschreibung (Option `-i`). Dateien, welche exakt '''datei_1.pdf''' heißen oder `xyz` im Namen beinhalten, werden ignoriert. {{{#!vorlage Befehl pdfgrep -ri --exclude=datei_1.pdf --exclude='*xyz*' ubuntu ~/Dokumente }}} = Links = * [https://pdfgrep.org/ Projektseite] {en} * [wikipedia:Regulärer_Ausdruck#Regul.C3.A4re_Ausdr.C3.BCcke_in_der_Praxis:Erklärung regulärer Ausdrücke] * [man:glob:glob - globbing Pathnames] {en} # tag: Shell, PDF