Schlagwort-Archive: odf

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:

  1. #!/bin/bash
  2.  
  3. if [ $# -ne 2 ]; then
  4. echo "Benutzung: searchodt pfad ausdruck"
  5. exit 1
  6. fi
  7.  
  8. find $1 -name "*.odt" | while read file
  9. do
  10. unzip -ca "$file" content.xml | grep -qli "$2"
  11. if [ $? -eq 0 ]; then
  12. echo "Suchbegriff gefunden in " $file
  13. fi
  14. done

Anleitung:
Man kopiere das obige Skript und füge es in eine Datei Namens 'searchodt' ein. Mache diese ausführbar:

  1. chmod +x searchodt

Anschließend läßt man das Skript auf seine Dokumente los:

  1. ./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:

  1. Suchbegriff gefunden in [dateiname]

Und nun viel Spaß beim Suchen.

PS: Versucht das man mit einem .doc hinzubekommen 😉