Die Suche selbst ist oft wichtiger als das Gefundene
Vorweg erwähne ich das geniale KDE Datei-Suchprogramm KFind
Der kleine Nachteil, mit apt-get install kfind installiert man sich ein halbes KDE, welches man ja eigentlich nicht will.
Eine vorherige Sicherung der installierten Pakete ist daher sinnvoll! Dies funktioniert auch ohne Ruthrechte!
$ dpkg --get-selections > ~/debian_pakete_`date +%y-%m-%d`.txt
Um die unten beschriebenen Tools in Skripten zu verwenden, installiert man sich diese wie folgt in Debian.
apt-get install pdfgrep poppler-utils ocrmypdf tesseract-ocr tesseract-ocr-deu \
ghostscript docx2txt odt2txt python3-pdfminer zenity gimagereader pdfarranger
Das Tool pdftotext kommt aus dem Debian-Paket poppler-utils.
ODT2txt extrahiert Text aus LibreOffice ODT-Dateien
ODT2txt benötigt ein bash-Skript.
Wir legen wir uns einen eigenen Ordner via mkdir ~/bin an. Kopiere das Shellscript mit Namen odttext.sh in den Ordner ~/bin und mache es mit chmod -x bin/odttext.sh ausführbar.
Der Start dann im Terminal.
Falls der Ordner ~/bin nicht im Pfad steht, kopiert man dies in die Datei ~/.bashrc
Dies steht zwar auch in der Datei .profile - zieht aber nicht.
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Mit dem Skript sucht man nach Wörtern in LibreOffice ODT-Dateien:
#!/bin/bash
## Suchbegriff über Zenity-Eingabedialog abfragen
suchbegriff=$(zenity --entry --title="ODT-Suche" --text="Nach welchem Wort suchen?")
if [ $? -ne 0 ] || [ -z "$suchbegriff" ]; then
zenity --error --text="Keine Eingabe. Abbruch."
exit 1
fi
ergebnisse=$(find . -type f -iname "*.odt" -exec sh -c 'odt2txt "$1" | grep -qi "$2" && \
echo "$1"' sh {} "$suchbegriff" \; 2>/dev/null)
if [ -z "$ergebnisse" ]; then
zenity --info --title="Suchergebnisse" --text="Kein Treffer für '$suchbegriff' gefunden."
else
echo "$ergebnisse" | zenity --list --title="Suchergebnisse" \
--text="Dateien mit '$suchbegriff':" --column="Datei"
fi
Mit diesem Skript sucht man nach Wörtern in Mikkisoft DocX-Dateien:
#!/bin/bash
# Verwende Zenity, um das Verzeichnis auszuwählen
directory=$(zenity --file-selection --directory --title="Wähle ein Verzeichnis aus")
# Wenn der Benutzer "Abbrechen" klickt, das Skript beenden
if [ -z "$directory" ]; then
zenity --error --text="Kein Verzeichnis ausgewählt. Skript wird beendet."
exit 1
fi
# Verwende Zenity, um das Suchwort einzugeben
search_word=$(zenity --entry --title="Suchwort eingeben" --text="Gib das Suchwort ein:")
# Wenn kein Suchwort eingegeben wurde, das Skript beenden
if [ -z "$search_word" ]; then
zenity --error --text="Kein Suchwort eingegeben. Skript wird beendet."
exit 1
fi
# Suche nach dem Suchwort in allen .docx-Dateien im ausgewählten Verzeichnis
matches=$(find "$directory" -type f -iname "*.docx" -exec sh -c "
for file; do
# Extrahiere den Text aus der docx-Datei
text=\$(docx2txt < \"\$file\")
# überprüfe, ob das Suchwort im Text vorkommt
if echo \"\$text\" | grep -iq \"$search_word\"; then
echo \"\$file\"
fi
done
" sh {} +)
# Wenn Treffer gefunden wurden, zeige sie in Zenity an
if [ -n "$matches" ]; then
zenity --info --title="Gefundene Dateien" --text="Das Suchwort '$search_word' \
wurde in folgenden Dateien gefunden:\n$matches"
else
zenity --info --title="Keine Treffer" --text="Kein Treffer für '$search_word' gefunden."
fi
PDFgrep - ein schnelles Terminal-Tool um Text in PDF-Dateien zu finden
PDFgrep ist ein Kommandozeilenwerkzeug und durchsucht eine oder mehrere PDF's vom aktuellen Ordner aus nach einem Muster und gibt die Fundstellen im Terminal aus. Es durchsucht PDF-Dateien nach Textmustern (regulären Ausdrücken). ähnlich wie grep für Textdateien und gibt Seitennummern aus. Ideal um schnell Text in komplexen Dokumenten zu lokalisieren.
Es ignoriert Gross- und Kleinschreibung (-i), sucht rekursiv (-r), Trefferanzahlen zählen (-c).
pdfgrep -icr "Suchwort"
Oder mit einem Alias in der .bashrc:
alias suchpdf='suchwort=$(zenity --entry --text="Aktuell-Ordner-Suchwort,ignore G+k") && pdfgrep -ri . -e "$suchwort"'
Um alle CPU-Kerne des Rechners verwenden zu können:apt install parallel
find . -type f -iname '*.pdf' -print0 | parallel -0 -j"$(nproc)" pdfgrep -Hn 'Suchwortjuppi' {}
Tesseract ist eine leistungsstarke Open-Source-OCR-Engine
Tesseract ist eine optische Zeichenerkennung und ermöglicht Text aus gescannten Dokumenten, Bildern oder PDFs präzise zu extrahieren. Als Kommandozeilen-Tool ist es besonders für Entwickler und fortgeschrittene Nutzer geeignet, die eine flexible und skalierbare Lösung zur Texterkennung suchen. Mit Unterstützung für mehr als 100 Sprachen und umfangreichen Anpassungsmöglichkeiten ist Tesseract ideal für die Automatisierung von Workflows und die Verarbeitung großer Datenmengen.
Ein Beispiel für die Extrahierung von Text aus einem PDF:
pdftotext -layout sample.pdf sample.txt
Ein Beispiel für die Umwandlung eines Bildes mit Textinhalt in ASCII-Text:
tesseract bild-abc.jpg bild-abc
Beispielhaft eine Umwandlung vom Text im Bild in deutschen Text:
tesseract superbild.png supertext -l deu
Dieses Skript durchsucht nach einer händischen Ordnerauswahl und Zenity via Terminal alle PDF-Dateien mit dem angegebenen Suchwort:
#!/bin/bash
# Ordner auswählen (Zenity GUI)
folder=$(zenity --file-selection --directory --title="Wähle den Ordner mit den PDF-Dateien")
# Wenn kein Ordner ausgewählt wurde, beende das Skript
if [ -z "$folder" ]; then
zenity --error --text="Kein Ordner ausgewählt. Skript wird beendet."
exit 1
fi
# Suchbegriff eingeben (Zenity GUI)
search_term=$(zenity --entry --title="Suchbegriff" --text="Gib den Text ein, nach dem du suchen möchtest:")
# Wenn kein Suchbegriff eingegeben wurde, beende das Skript
if [ -z "$search_term" ]; then
zenity --error --text="Kein Suchbegriff eingegeben. Skript wird beendet."
exit 1
fi
# Rekursive Suche nach PDFs im gewählten Ordner
results=$(find "$folder" -type f -iname "*.pdf" -exec pdftotext {} - 2>/dev/null \; | grep -i "$search_term")
# Wenn Ergebnisse gefunden wurden, zeige sie in einem Zenity-Info-Dialog
if [ -n "$results" ]; then
zenity --info --text="Ergebnisse gefunden:\n\n$results"
else
zenity --info --text="Keine Ergebnisse gefunden."
fi
Mit diesem Alias in der Datei ~/.bashrc sucht man nach Text in Ascii Dateien mit der Endung .txt:
alias suchtxt='suchwort=$(zenity --entry --text="Suchwort eingeben") && grep -rniw --include="*.txt" . -e "$suchwort"'
Mit diesem Alias sucht man Dateien. Platzhalter wie Sterne und Fragezeichen sind erlaubt!
alias find-z='zenity --entry --text="Suchwort Datei, Platzhalter erlaubt" | xargs find . -iname'
Fügt man in der ~/.bashrc Code oder Aliase hinzu, sollte man im Anschluss mit bash im Terminal die Änderungen bestätigen oder via source ~/.bashrc
Mit Recoll ist man mit Abstand bei der eierlegenden Wollmichsau
Die Installation der Suchdatenbankanwendung und Erweiterungen erfolgt so in Debian:
apt install recoll python3-py7zr pff-tools unrtf antiword poppler-utils ghostscript catdoc xsltproc libavcodec-extra
Viel Spaß mit den Tools in Debian, ohne alles irgendeiner künstlichen Intelligenz seine Daten befingern zu lassen!
Zurück
↑°↑