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.

Add new comment

Restricted HTML

  • Allowed 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>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.