OpenOffice / LibreOffice-Dateien durchsuchen

Wer mit Linux arbeitet, kann früher oder später bei einem kleinen oder delikaten Problem ankommen:

Man weiß, dass in irgendeiner mit Libre Office erstellten Datei ein Text zum Thema "x-beliebig" steht. Man weiß aber nicht mehr, in welcher.

Tools wie grep helfen dann nicht ohne Weiteres, da die genannten Dateien zip-Dateien sind und den Klartext des Dokuments verbergen.

Also habe ich ein Script gebaut, das Abhilfe schafft:

docfind.sh:

#!/bin/bash
export DOCKEY=$@


function searchdoc(){
VK1=$(cat "$@" | grep -i $DOCKEY | wc -c)
VK2=$(unzip -c "$@" | grep -i $DOCKEY | wc -c)
let NUM=$VK1+$VK2
if [ "$NUM" -gt 0 ]; then
echo $NUM Vorkommen in $@
echo Datei wird geöffnet.
gnome-open "$@"
fi
}

export -f searchdoc
echo Suche nach $DOCKEY ...
find . -exec bash -c 'searchdoc "{}" 2>/dev/null' \;

Diese paar Zeilen Code machen folgendes:

find ackert durch alle Dateien im aktuellen Verzeichniss und den darin befindlichen Ordnern und ruft für jede Datei die Funktion searchdoc auf.

searchdoc wiederum liest einmal die Datei so wie sie ist und versucht außerdem noch mittels unzip die Datei zu entpacken, um darin zu suchen.

Wird auf eine der beiden Such-Arten der gewünschte Inhalt gefunden, so wird das entsprechende Dokument geöffnet.

Ein Aufruf kann also über $> docfind x-beliebig erfolgen.

Neuen Kommentar hinzufügen

Eingeschränktes HTML

  • Erlaubte HTML-Tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • Website- und E-Mail-Adressen werden automatisch in Links umgewandelt.