Viele OpenOffice Dokumente nach Begriff durchsuchen
19.09.2009Man 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







