Viele OpenOffice Dokumente nach Begriff durchsuchen
Man gehe davon aus, man hat einen Ordner voller Textdokumente im Open Document Format (.odf) und möchte diese nach einem (oder mehreren) Suchbegriffen durchsuchen. Nun kann man diese jeweils einzeln öffnen und die Suchfunktion von OpenOffice (o.ä.) bemühen, oder sich dort ein kleines Makro stricken.
Oder, man macht sich die Offenheit des Formates zu Nutze und durchsucht die Dokumente mit dem in dem Shell-Skript am Ende des Artikels.
Als kleine Hintergrundinformation sei gesagt, das ein Dokument im Open Document Format nichts anderes ist als eine (oder mehrere) XML-Datei(en), die in ein zip-Archiv verpackt sind. Das Skript macht nichts anderes als Dateien mit der Endung .odt mit Hilfe von 'find' zu suchen, diese mit 'unzip' zu entpacken und mit unserem guten Freund 'grep' zu durchsuchen.
Doch genug der Theorie, auf zum Wesentlichen, dem Skript:
#!/bin/bash if [ $# -ne 2 ]; then echo "Benutzung: searchodt pfad ausdruck" exit 1 fi find $1 -name "*.odt" | while read file do unzip -ca "$file" content.xml | grep -qli "$2" if [ $? -eq 0 ]; then echo "Suchbegriff gefunden in " $file fi done
Anleitung:
Man kopiere das obige Skript und füge es in eine Datei Namens 'searchodt' ein. Mache diese ausführbar:
chmod +x searchodt
Anschließend läßt man das Skript auf seine Dokumente los:
./searchodt /pfad/zu/den/odf-dateien suchbegriff
Für jedes Dokument, in dem der Suchbegriff gefunden wurde erhält man als Ausgabe eine Zeile der folgenden Art:
Suchbegriff gefunden in [dateiname]
Und nun viel Spaß beim Suchen.
PS: Versucht das man mit einem .doc hinzubekommen








19.09.2009 um 18:34
Hi,
obwohl ich noch nie vor dem Problem gestanden habe viele odt-Dateien zu durchsuchen, finde ich den Artikel auf jeden Fall sehr interessant.
Grüße
Michael
19.09.2009 um 20:03
[...] Viele OpenOffice Dokumente nach Begriff durchsuchen | /home/zero Script um in mehreren ODF (.odf) gleichzeitig nach einem Begriff zu suchen. [...]
19.09.2009 um 21:01
Hast Du denn schon einmal Beagle versucht.
Beagle durchsucht Dateien nach mehreren Begriffen und auf der gesamten HD. Auch doc, odt, pdf usw.
Gruß
21.09.2009 um 10:42
Ich muss gestehen, ich mag diese Desktop-Such-Softwares nicht besonders…belegen Systemresourcen und Speicherplatz…
und wenn ich wirklich nur in einem bestimmten Verzeichnis suchen möchte, oder das ganze auf einem Server direkt machen möchte, dann ist mir so ein kleines schmales Skript deutlich lieber
21.09.2009 um 22:29
Mit zgrep kann man das Skript noch etwas vereinfachen. Ob es auch von der Performance her was bringt, kann ich nicht beurteilen (und hab’s auch nicht getestet).
P.S.: Man kann auch DOCs mit grep durchsuchen. Dabei wird natürlich keine Zeile bei Fundstellen angegeben (gibt’s bei Binärformaten nicht in der Form), aber immerhin, ob etwas vorkommt oder nicht. Mehr brauchst du für das Skript ja nicht.
22.09.2009 um 12:01
@FriedChicken: ich glaube zgrep kann nur mit gzip gepackte dateien, die OpenDocument Dateien sind aber mit zip gepackt…
Ich habe gerade mal getestet, ohne Ergebnis…
26.09.2009 um 23:03
[...] gesamte Beschreibung und das Skript kann unter zeroathome.de angeschaut [...]