Die besten Such-Tools für Linux-Systeme

„Das habe ich doch irgendwo?“ Daten haben ist gut, Daten bei Bedarf schnell zu finden besser. Was Google, Bing oder Yahoo im großen Web vormachen, müssen Sie auf vergleichsweise kleinen Festplatten erst mal nachmachen.

Dateien und Dateiinhalte suchen und finden – und dies möglichst schnell – gehört zu den Standarddisziplinen der PC-Nutzung. Die Rechner werden zwar immer schneller, doch im gleichen Maße wachsen die Datenmengen und die Ansprüche. 

Der Heftschwerpunkt „Alles suchen & finden“ startet mit ausgewählten Terminalklassikern und Script-Lösungen zur Dateisuche. Obwohl die anschließenden Artikel elaboriertere Methoden der Datei- und Inhaltssuche zeigen werden, sind einige Terminalmethoden unverzichtbar, die hier den Anfang machen sollen. Bei der Suche nach Dateigrößen und nach dem Alter von Dateien ist find ein großartiges Tool und das schnelle locate ist vor allem auf Servern unentbehrlich.

Find für große, alte und neue Dateien 

Das Kommandozeilenwerkzeug find aus dem findutils-Projekt ist standardmäßig auf jedem Linux-System installiert. Es sucht grundsätzlich direkt im Dateisystem und ist dabei erstaunlich fix. Dennoch ist für die Dateisuche nach Namen das indexbasierte locate deutlich schneller und daher besser geeignet (siehe unten). Seinen unbestrittenen Platz hat find aber als Spezialfilter für besondere Aufgaben.

1. Zeitfilter: Der folgende Befehl 

find $HOME -mtime -3 

listet alle Dateien im Home-Verzeichnis, die jünger sind als drei Tage („mtime“ ist „modification time“). Die mit „-mtime“ oder „-ctime“ („creation time“) ermittelten Zeitattribute erfordern in der Regel ein Minuszeichen (kleiner als) oder Pluszeichen (größer als), da find sonst nur genau die Dateien liefert, die zufällig exakt der numerischen Angabe entsprechen.

find $HOME -mtime +8000

Dieser Befehl recherchiert über 8000 Tage alte, also über 20 Jahre alte Dateien. Die Parameter lassen sich durch Kombination zu sehr genauen Filtern ausbauen: 

find $HOME -mtime -1800 -mtime +1400 -iname *.jpg 

Dies liefert Ihnen alle JPG-Bilder, die 2014 bis 2015 entstanden sind (fünf bis vier Jahre vor jetzt 2019). Eine kleine Bash-Funktion für die Datei „~/.bashrc“, die Ihnen die Eingabe solcher Zeitfilter vereinfacht, sehen Sie in der Abbildung auf dieser Seite.

2. Größenfilter: Um Dateien bestimmter Größe zu suchen, gibt es den find-Schalter „-size“: 

find $HOME -size +6G 

Dies liefert alle Dateien, die größer sind als sechs GB. Die Vorzeichen Plus und Minus sind aus demselben Grund wie oben bei den Zeitangaben notwendig. Eine Kombination wie

find . -size +800M -size -2G 

liefert folglich alle Dateien mit einer Größe zwischen 800 MB und zwei GB. Auch dazu zeigt die Abbildung eine kleine Bash-Funktion, die ausgehend vom aktuellen Verzeichnis ihre Suche beginnt.

3. Größenanalyse mit tree: Wer sich alle Dateigrößen innerhalb eines Pfades sortiert anzeigen lassen will, fährt am besten mit folgendem Kommando:

tree -sfi | sort -k2 -n

Das Tool tree, das meistens mit gleichnamigem Paketnamen nachinstalliert werden muss, liefert mit Schalter „-s“ die Byteanzahl, die wiederum der Sort-Filter anschließend aufsteigend numerisch sortiert. 

Indexierte Suche mit locate 

Eine schnelle Dateisuche im Terminal ist auf SSH-administrierten Servern unerlässlich, aber auch auf dem Desktop willkommen. Tool der Wahl ist aufgrund seiner Geschwindigkeit locate, das etwa auf Debian/ Ubuntu-Systemen mit 

sudo apt install mlocate 

schnell nachgerüstet ist. Das Paket enthält neben diesem Suchkommando locate auch das wichtige Indexierungstool updatedb. Damit die Dateiliste aktuell ist, muss je nach Rechnernutzung täglich oder auch häufiger der Befehl 

sudo updatedb 

ausgeführt werden. Das ist ganz klar ein Fall für die Crontab des root-Kontos (crontab -e -u root): 

0 */4 * * * /usr/bin/updatedb 

Mehr Wartung ist nicht nötig. locate sucht nur nach Dateinamen, aber ein Befehl wie 

locate -A -i satriani malmsteen vai 

liefert sofort alle passenden Dateien mit komplettem Pfad – auch bei sehr großen Datenbeständen. Die lästige Eingabe der fast immer notwendigen Parameter „-A“ (alle Wörter müssen im Dateinamen vorkommen) und „-i“ (Groß/Kleinschreibung ignorieren) können Sie sich mit einem Alias

alias loc='locate -A -i' 

in der Datei „~/.bashrc“ leicht ersparen. Das exzellente Hilfsmittel locate nutzt Vorgaben, die man unbedingt kennen sollte. Es ist nämlich keineswegs so, dass grundsätzlich das gesamte Dateisystem indexiert wird. So bleiben zum Beispiel USB-Laufwerke außen vor, womit locate etwa auf Platinenservern, die ihren Dateibestand praktisch nur über USB anbieten, unbrauchbar erscheint. Die einzige Konfigurationsdatei „/etc/updatedb.conf“ kennt nur Ausschlussanweisungen („PRUNE“), keine Optionen, um umgekehrt Pfade aktiv einzubinden. Die Lösung liegt in der Zeile „PRUN EFS=…“. Dort finden Sie den Eintrag „usbfs“, den Sie einfach löschen und danach sudo updatedb erneut starten. Ebenfalls zu unbefriedigenden locate-Ergebnissen kann die Pfadangabe „/media“ führen, die Sie nach „PRUNEPATHS=“ antreffen. Falls benötigt, sollten Sie hier „/media“ löschen, damit dieser Pfad indexiert wird.

Textfilter mit grep 

Nach den Terminaltools, die nach den Dateiattributen Name (empfohlen: locate), Größe (empfohlen: find oder tree) und Datum (empfohlen: find) fahnden, erhält abschließend der unentbehrliche Textfilter grep seinen Platz. Grep ist kein Werkzeug für globale Textsuche, zumal es nur mit puren Textdateien zurechtkommt. Aber es ist das typische Aufräumkommando in einer Befehlspipe:

find $HOME -mtime 5 | grep -v "mozilla"| grep -v ".cache" 

Das filtert die entbehrlichen Ergebnisse aus dem Weg. Halden mit puren Textdateien kann grep aber auch rekursiv und dabei mit erstaunlicher Geschwindigkeit durchforsten. Der Befehl 

grep -r "Kubuntu" .

zeigt alle Dateien, in denen das gesuchte Wort vorkommt, bei puren Textdateien auch den betreffenden Absatz. Bei Binärdateien oder solchen mit falscher Zeichenkodierung nennt grep zumindest den Dateinamen des Treffers. 

Suchen & Finden: Grafische Tools 

Braucht man auf Desktopsystemen wie Ubuntu oder Linux Mint die Hilfe von externen Suchprogrammen oder genügt der Dateimanager? Die Datenmenge entscheidet: Für große Datensammlungen sind Dateimanager zu umständlich und zu langsam. 

Nach den Terminalwerkzeugen im vorangehenden Artikel geht es hier um grafische Desktoplösungen zur Dateisuche. Die in diesem Beitrag empfohlenen Programme haben weiterhin „nur“ die Suche nach Dateiattributen im Fokus – also insbesondere die Suche nach Dateinamen. Indexer für Dateiinhalte sind Gegenstand der nachfolgenden Beiträge.

Die Dateisuche im Dateimanager

Während kleine Dateimanager wie Thunar oder Pcmanfm die Dateisuche von Haus aus delegieren (etwa an das Suchtool Catfish), beherrschen die Kandidaten großer Desktopdistributionen wie Nautilus, Nemo oder Dolphin die selbständige Suche nach Dateien. Es handelt sich um eine reine Dateisuche nach Dateinamen, nicht nach Dateiinhalten.

Die Dateimanager-Suche ist nicht casesensitiv und damit Linux-untypisch. Sie können am einfachsten alles in Kleinschreibung eingeben. Die Suche gilt standardmäßig für den aktuell geöffneten Ordner und rekursiv für alle dort enthaltenen Unterordner. Das bedeutet eine erste Einschränkung, vor allem dann, wenn Pfade außerhalb von „Home“ wichtige Daten enthalten (etwa unter „/media“, „/mnt“ oder „/srv“). Um alle Pfade zu erfassen, müssten Sie die Suche immer vom Wurzelverzeichnis aus starten. Das wiederum bedeutet eine zweite Einschränkung – denn dadurch wird die Suche unnötig umfangreich und langsam. Oder Sie navigieren vor jeder Suche gezielt zum passenden Hauptpfad.

Indexierende Suchtools sind nicht nur viel schneller, sie sind nach der Ersteinrichtung auch einfacher zu bedienen, weil die Rücksicht auf einen Startpfad generell entfällt. Trotzdem ist der Einsatz eines Suchtools eventuell entbehrlich: 

1. Alle Benutzerdateien befinden sich im Home-Verzeichnis oder sind dorthin gemountet. Dann entfällt das Navigationsproblem für die Suche und bei überschaubaren Datenmengen sollte der Dateimanager ausreichen.

2. KDE und sein Dateimanager Dolphin sind ein Sonderfall: Dolphin integriert unter seinem Lupensymbol („Suchen“) standardmäßig den Suchdienst Baloo, der sich bei Bedarf mit

sudo apt install baloo 

auch nachrüsten lässt. Grundsätzlich aktivieren lässt sich Baloo in den KDE-Systemeinstellungen unter „Suchen“ („Dateisuche aktivieren“), dort optional auch als Inhaltsindex („Auch Dateiinhalt indizieren“). Details müssen Sie über das Hilfsprogramm balooctl erledigen: „enable“, „disable“ schalten den Dienst ein und aus, „start“ und „stop“ starten oder pausieren die Indexierung, „status“ zeigt Indexgröße, Datenmenge und Dienstzustand. balooctl index [Pfad] fügt einen Ordner zur Indexierung hinzu. Die wichtigsten Basiseinstellungen können Sie auch manuell in der Datei „~/.config/baloofilerc“ erledigen. Fundamental ist vor allem diese Zeile

folders[$e]=$HOME/ 

mit den zu indexierenden Pfad.

Der Suchen-Dialog in Dolphin nutzt automatisch aktiviertes Baloo und ist dementsprechend schnell. Über die Schaltfläche „Mehr Optionen“ können Sie weitere Filter setzen – so zum Dateityp und zum Erstelldatum. Nebenbei taugt Baloo auch zur Suche im Terminal – ähnlich dem im vorangehenden Artikel vorgestellten locate: Dazu gibt es das Terminaltool baloosearch: 

baloosearch linuxwelt pdf 

Es liefert die kompletten Pfadnamen aller passenden Dateien. Baloo ist schnell, vielseitig und effizient, produziert allerdings einige CPU-Last sowie Indexdateien, die schnell Gigabyte-Größe erreichen.

Fsearch: Einfache und schnelle Namenssuche 

Das relativ junge Fsearch ist wie Angry Search (siehe unten) vom Windows-ToolEverything inspiriert. Suchfeld und Ergebnisfeld sehen ganz ähnlich und ebenso einfach aus wie bei Everything. Fsearch liefert passende Ergebnisse sofort ab dem ersten eingetippten Buchstaben und ein Klick auf eine Datei öffnet diese in der Standardanwendung. Standardmäßig gilt eine einfache UND-Syntax, wenn Sie mehrere Suchwörter eingeben, Regular Expressions sind über „Suche –› Aktiviere RegEx“ zu erreichen.

Die Einrichtung unter Ubuntu & Co. gelingt per PPA ganz bequem: 

sudo add-apt-repository ppa:christian-boxdoerfer/fsearch-daily 

sudo apt update 

sudo apt install fsearch-trunk 

Im gestarteten Programm stellen Sie unter „Bearbeiten –› Einstellungen –› Datenbank“ die gewünschten Pfade ein. Die Suchoptionen orientieren sich an Everything, so zum Beispiel die Option „Suche –› Suche in Pfad“, die besagt, dass sich eine Sucheingabe auf den kompletten Dateipfad bezieht. Die Option wird also bei der Eingabe „bilanz“ auch eine Datei anzeigen, die „ha.odt“ heißt, aber im Ordner „/home/ha/Dokumente/Steuer/Bilanz-2018/“ liegt.

Fsearch erlaubt sämtliche Einstellungen an der grafischen Oberfläche. Trotzdem ist es gut zu wissen, dass dahinter die entscheidende Konfigurationsdatei „~/.config/fsearch/fsearch.conf“ steht. Sie kann wichtig werden, wenn Sie etwa das Programm-Menü über „Ansicht“ ausgeblendet haben und nun nicht mehr wissen, wie Sie das rückgängig machen können.

Im direkten Vergleich mit Angry Search ist Fsearch deutlich komfortabler, außerdem in aktiver Entwicklung, während Angry Search seit geraumer Zeit stagniert. Einen Nachteil hat Fsearch jedoch: Es gibt vorerst keinen Weg, die Dateiliste per Terminalbefehl und Cronjob automatisch zu aktualisieren. Daher ist zu empfehlen, unter „Bearbeiten –› Einstellungen –› Datenbank“ die Option „Datenbank beim Start aktualisieren“ zu aktivieren. Der Vorgang ist fix (wenige Sekunden für hunderttausend Dateien) und daher keine ernsthafte Bremse. Wenn Sie trotzdem lieber manuell aktualisieren, nutzen Sie das Menü „Datei –› Datenbank aktualisieren“. 

Angry Search: Dateisuche mit Indexupdate 

Angry Search ist wie Fsearch ein reines Dateiwerkzeug, das nach Pfaden und Namen sucht, nicht nach Dateiinhalten. Das Python-Script ist unter Linux überall lauffähig, da Python zum Linux-Standard gehört. Unterhttps://github.com/DoTheEvo/ANGRYsearch/releases finden Sie zwei Downloads (zip und tar.gz), die Sie nach dem Download an beliebiger Stelle etwa im Home-Verzeichnis entpacken. Im Terminal gehen Sie dann in diesen Ordner, machen das Install-Script mit

chmod +x install.sh 

ausführbar und starten es: 

sudo sh install.sh 

Danach ist Angry Search als „ANGRYsearch“ im Hauptmenü erreichbar oder im Terminal über den Befehl angrysearch. Den Index erstellen Sie mit der Schaltfläche „update“. Dabei berücksichtigt Angry Search standardmäßig das komplette Dateisystem. Wenn Sie Pfade ausschließen wollen, tragen Sie diese in die Konfigurationsdatei „~/.config/angrysearch/angrysearch.conf“ nach 

directories_excluded= 

ein – und zwar mit Leerzeichen getrennt (etwa „directories_excluded=/bin /var / etc“). Umgekehrt müssen Sie dafür sorgen, dass der Index alle Ressourcen erfasst, die Sie durchsuchen möchten. Diese müssen also vor dem Klick auf „update“ ordnungsgemäß gemountet sein.

Angry Search und Fsearch sind praktisch funktionsgleiche Tools, mit klaren Komfortvorteilen von Fsearch (Installation, Konfiguration). Jedoch kann der Index von Angry Search periodisch von außen aktualisiert werden. Dazu dient das Hilfs-Script „angrysearch_ update_database.py“, das Sie alle paar Stunden mit

0 */4 * * * /usr/share/angrysearch/angrysearch_update_database.py

via Cronjob anstoßen (crontab -e). 

Inhaltssuche auf dem lokalen System

Eine flotte indexierende Suche nach Dateiinhalten sollte eigentlich jedes Betriebssystem vorweisen. Auf dem Linux-Desktop ist die Situation jedoch unübersichtlich. Ohne tatkräftige Nachhilfe des Nutzers bleibt eine Desktopsuche die Ausnahme. 

Ob Spotlight unter Mac-OS X und der Indizierungsdienst unter Windows als Vorbilder taugen, kann man getrost in Frage stellen. Aber immerhin bringen diese Systeme ein integriertes Suchwerkzeug mit und der Nutzer mag dann selbst entscheiden, ob ihm dieses ausreicht. Unter Linux ist derzeit nur der KDE-Desktop mit Baloo entsprechend ausgestattet. Das Äquivalent unter Gnome heißt Tracker, ist in der aktuellen Gnome-Vorzeige-Distribution Ubuntu allerdings fehlerhaft und die Alltagstauglichkeit einiger weiterer Suchtools muss man bei genauerer Prüfung in Frage stellen. Wir trennen die Spreu vom Weizen.

Aussortiert: Tracker, Strigi, Searchmonkey … 

Die Auswahl an Suchsoftware scheint groß, jedoch sollten Sie Strigi und Beagle schon mal als hoffnungslos veraltet ad acta legen. Tools wie Searchmonkey und Gnome- Search-Tool können durchaus in ein paar Hundert Script-Dateien ad hoc das Gesuchte filtern, sind aber keine Indexer für große Datenarchive. Catfish wiederum ist nur ein Front-End für locate & Co. (zu locate siehe vorangehenden Beitrag). Der an sich taugliche Tracker verzichtet mittlerweile auf eine eigene Oberfläche (tracker-gui) und ist ganz auf die Integration in Gnome und Nautilus angewiesen. Diese Integration ist aber bei Ubuntu durch einen Bug seit Version 17.04 gestört. Das Problem scheint bekannt, aber bei Canonical nur niedrig priorisiert, sodass zeitnahe Abhilfe ungewiss bleibt. Was bleibt, ist überschaubar, jedoch völlig ausreichend: KDE hat das etwas behäbige Baloo, auf allen anderen Desktops empfehlen sich Docfetcher und Recoll. Letzteres ist auch servertauglich und wird erst im anschließenden Artikel genauer erklärt.

KDE und Baloo 

Der Dienst Baloo unter KDE/Dolphin wurde schon im vorhergehenden Artikel in seiner Funktion als schlichte Dateisuche erwähnt. Baloo kann aber auch für die Inhaltssuche genutzt werden, wenn in den KDE-Systemeinstellungen unter „Suche –› Dateisuche“ die betreffende Option aktiviert wird. Dies entspricht der Direktive 

only basic indexing=false 

in der Konfigurationsdatei „~/.config/baloofilerc“. Alles Weitere sollte der Dienst automatisch erledigen, der Befehl 

balooctl resume 

kann den Vorgang explizit anstoßen. Weitere zu indizierende Pfade sind – wie schon angesprochen – in der „~/.config/baloofilerc“ nach „folders[$e]=“ einzutragen oder alternativ mit diesem Terminalbefehl: 

balooctl index [Pfadangabe] 

Baloo ist alles andere als heikel und leistet einen Inhaltsindex aller wesentlichen Dateitypen von purem Text und HTML über Office (Microsoft und Libre Office), PDF, RTF, CHM, EML bis hin zu Metadaten von Bild, Audio und Film. Die Indexerstellung fordert allerdings sehr viel Zeit und CPU-Ressourcen sowie unter Umständen etliche Gigabyte Platz. Die Assoziation des behäbigen Dschungelbuch-Bären Baloo stellt sich zwanglos ein – ob dies tatsächlich gewünscht ist, sei dahingestellt. Im Dateimanager entscheiden Sie dann je nach Situation, ob nach Klick auf „Suchen“ die einfache Dateisuche („Dateiname“) genügt oder die Option „Inhalt“ erforderlich ist. Außerdem können Sie im aktuellen Pfad („Ab hier“) oder „Überall“ suchen. Die Suchsyntax in Dolphin ist durchaus komplex, jedoch sollte den meisten Nutzern die standardmäßige UND-Suche völlig ausreichen: 

raspberry banana 

Solche Suche ist gleichbedeutend mit „raspberry AND banana“. Weitere Operatoren sind „OR“ und „NOT“, ferner gibt es zahlreiche Metaeigenschaften wie „author:“, „bitrate:“ oder „type:“ (z. B. „document“ oder „text“): 

raspberry type:image 

Eine Reihe dieser Eigenschaften macht allerdings Dolphin durch sein bequemeres Klickangebot „Mehr Optionen“ überflüssig. Baloo ist insgesamt dem Windows-Indexer sehr ähnlich und besitzt auch den gravierenden Nachteil desselben: Als Ergebnis erscheint nur die Liste der passenden Dateien, eine Vorschau auf die Abschnitte in Textdokumenten gibt es nicht.

Docfetcher: Schnelle Desktopsuche

Wo Textsuche im Vordergrund steht, ist der unkomplizierte Docfetcher Favorit. Das Java-Tool läuft bei vorhandener Java-Runtime unter Linux, Mac-OS X und Windows. Bei Bedarf installieren Sie Java unter Debian/ Ubuntu mit folgender Befehlszeile 

sudo apt install default-jre 

nach. Docfetcher selbst erhalten Sie auf http://docfetcher.sourceforge.net unter „Download“. Entpacken Sie die Datei – aktuell „docfetcher-1.1.22-portable.zip“ – am einfachsten in das Home-Verzeichnis. Eine Installation ist nicht nötig – das Tool starten Sie im Terminal in seinem Verzeichnis mit dem Befehl 

sh Docfetcher-GTK3.sh 

oder bei älteren Systemen 

sh Docfetcher-GTK2.sh

Wer möchte, kann sich auch eine Desktopverknüpfung mit diesem Befehl („Exec=…“) anlegen, wobei dann aber der komplette Pfad eingetragen werden muss.

Index erstellen: Um einen Suchindex zu erstellen, klicken Sie mit der rechten Maustaste in das leere Feld unter „Suchbereich“ und gehen im Kontextmenü auf „Index erstellen aus –› Ordner“. Nach Auswahl des zu durchsuchenden Ordners startet ein Klick auf „OK“ die Indexierung. Sie können auf diese Weise mehrere Ordner in den Suchbereich aufnehmen. Das Programm durchsucht Libre Office, Microsoft Office, PDF, Epub, RTF, HTML, puren Text, aber auch MP3 und JPG einschließlich eventueller Kommentierungs-Tags. Die Analyse beschränkt sich aber auf Textinformationen, Exif-Tags von Bildern oder Bitraten bei Audio können Sie nicht abfragen.

Verglichen mit einem Baloo verläuft die Indexierung rasend schnell. Für große sechsstellige Datenmengen empfehlen wir aber eine Anpassung des Start-Scripts „DocFetcher-GTK3.sh“, um das Speicherlimit für Docfetcher zu erhöhen. Ersetzen Sie dort „-Xmx256m“ etwa durch „-Xmx1024m“. Wenn nämlich die Indexierung wegen eines Speicherengpasses einfriert, ist der bislang geschriebene Index in der Regel defekt und muss komplett neu erstellt werden.

Index aktualisieren: Wenn Docfetcher läuft, bemerkt das Programm geänderte oder neue Dateien automatisch und nimmt sie in den Index auf. Sie können aber auch im Kontextmenü eines Eintrags im Suchbereich jederzeit auf „Aktualisieren“ gehen. Da Docfetcher dabei nur neue Daten berücksichtigt, ist dies schnell erledigt.

Suche in Docfetcher: Die Suche starten Sie mit einem Suchbegriff oben im Suchfeld und Eingabetaste oder Klick auf „Suchen“. Ob Docfetcher mehrere durch Leerzeichen getrennte Wörter als logisches UND oder als ODER verknüpft, ist über die Einstellungen (rechts oben kleines Zahnradsymbol) zu steuern. Explizites AND, OR und NOT in Großbuchstaben (alternativ „||“, „&&“ und „-“) sind natürlich ebenfalls möglich. Bei mehreren Wörtern in Anführungszeichen wird nach der gesamten Phrase gesucht. Wichtig vor allem für umfangreichere Dokumente ist auch die Near- oder Nachbarschaftssuche. Der Suchbegriff 

"Ubuntu Nautilus" ~15

findet Texte, in denen diese beiden Wörter höchstens 15 Wörter voneinander entfernt stehen.

Einer der entscheidenden Vorzüge von Docfetcher ist das Vorschaufenster. Es zeigt die passenden Textabsätze an, zeichnet dabei die Suchwörter farblich aus und erlaubt Markieren und Kopieren. Über die Schaltfläche mit dem Pfeil-nach-unten-Symbol lassen Sie sich die nächste Fundstelle anzeigen. Das Laden der eigentlichen Quelldatei wird dadurch in den allermeisten Fällen unnötig, ist aber durch Doppelklick in der Dateiliste jederzeit möglich. 

Datei- & Inhaltssuche auf Servern 

Wenn ein Homeserver den Großteil der Dateien oder gar alle bereitstellt, liegt es nahe, diesen über das Netzwerk durchsuchbar zu machen. Die Suche über Samba-Netzfreigaben ist zu träge – dies erst recht, wenn auch Dateiinhalte gefiltert werden sollen. 

Die Datei- und Inhaltssuche auf einem Server über das Netzwerk hat mindestens zwei Aspekte: Im einfachen Fall möchte man nur wissen, ob und wo sich bestimmte Daten auf einem Server befinden. Wenn der Server über SSH erreichbar ist, genügen dafür einfache Terminalmethoden, die schon an früherer Stelle dieses Specials besprochen wurden. Anspruchsvoller ist ein vollwertiger Suchserver mit Inhaltsindexierung, der die Abfragen und Ergebnisse über einen Webserver für jeden Browser im lokalen Netz anbietet.

Einfache Dateisuche am Server 

Läuft auf einem Netzwerkrechner der Open-SSH-Server, ist im Terminal eine Dateisuche wie auf einem lokalen Rechner möglich. Die sollte man sich aber so reaktionsschnell wie möglich einrichten. Einschlägig ist das oben beschriebene locate. Damit durchsuchen Sie auch umfangreiche Serverdaten in Sekundenschnelle. Alle Hinweise zum Indexupdate (updatedb), zur Berücksichtigung externer Laufwerke und zur locate-Syntax gelten auch für die Suche über SSH. Locate muss auf dem Server eingerichtet sein – nicht auf dem Client.

Im SSH-Terminal ist aber noch mehr als die Suche nach Dateinamen möglich, sofern auf dem Server ein Suchindexer läuft, der Kommandozeilentools mitbringt. Das gilt zum Beispiel für den KDE-Indexer Baloo, der mit baloosearch eine einfache Terminalsuche ermöglicht: 

baloosearch heisenberg einstein 

Dies liefert sofort die Pfadnamen aller passenden Dateien, die im Inhalt (!) oder im Dateinamen beide Suchwörter enthalten. Auch das nachfolgend näher erklärte Recoll hat ein Terminaltool im Angebot, das solche Dateirecherche erlaubt: 

recollq heisenberg einstein 

Jede Suche im Terminal, lokal oder per SSH, kann allerdings nur die Bestätigung bieten, ob und wo auf dem Server einschlägige Daten vorhanden sind. Für die weitere Recherche sind dann andere Methoden über Samba oder SSH-X11-Forwarding notwendig. Ein Suchtool, das sich zur vollwertigen Inhaltsrecherche eignet, ist das nachfolgend beschriebene Recoll.

Recoll als zentraler Suchserver

Recoll kann die Rolle des Suchservers im Netzwerk für Text, Bild und Musik aller Art übernehmen, da es alle relevanten Dateiformate einschließlich enthaltener Metadaten erfasst (Text, HTML, Libre/Microsoft Office, Mail, PDF, Postscript, RTF, CHM, Epub, Audio- und Bildformate).

Ausgangspunkt ist zunächst die Installation von Recoll auf dem Netzwerkserver und die Einrichtung der Indizes. Dies ist im Prinzip auch auf einem Headless-Server ohne Peripherie via SSH möglich (über das Tool recollindex), fällt aber deutlich leichter über eine grafische Oberfläche. Sie installieren Recoll, das überall in den Standard-Paketquellen verfügbar ist, mit diesem Kommando: 

sudo apt install recoll pythonrecoll python3-recoll

Wer eine möglichst aktuelle Version nutzen will, erreicht das unter Ubuntu & Co. bequem über ein externes PPA: 

sudo add-apt-repository ppa:recoll-backports/recoll-1.15-on 

sudo apt update 

sudo apt install recoll pythonrecoll python3-recoll 

Für Debian und Raspbian ist die Einrichtung einer aktuellen Recoll-Version etwas komplizierter, weil unter „/etc/apt/sources.list.d“ manuell eine Datei „recoll.list“ erstellt werden muss.

Die darin nötigen beiden Zeilen können Sie von der Seitewww.lesbonscomptes.com/recoll/download.html#packages beziehen – für das jüngste Debian 10 („Buster“) sind es die folgenden: 

deb http://www.lesbonscomptes.com/recoll/debian/ buster main 

deb-src http://www.lesbonscomptes.com/recoll/debian/ buster main

Danach lässt sich Recoll auch hier mit 

sudo apt update 

sudo apt install recoll pythonrecoll python3-recoll 

einrichten.

Indexierung und Aktualisierung: Installiertes Recoll erscheint im Hauptmenü unter „Zubehör“. Zur Angabe der gewünschten Quellordner und der Erstellung des Index gehen Sie zunächst auf „Einstellungen –› Index-Einstellungen –› Globale Parameter“. Hier legen Sie die „Start-Verzeichnisse“ fest, wo Recoll indexieren und suchen soll. Unter „Stemming-Sprachen“ verwenden Sie „german“ und „german2“. Klicken Sie zum Schluss auf „OK“ und dann im Hauptdialog auf „Datei –› Index aktualisieren“. Die Indexerstellung kann je nach Datenmenge viele Stunden dauern.

Spätere Indexaktualisierungen berücksichtigen nur noch die Änderungen des Datenbestands. Damit solche Aktualisierung gesichert ist, werden Sie gleich beim allerersten Recoll-Start nach einem „Zeitplan für die Indizierung“ befragt. Es handelt sich um die Einrichtung eines Cronjobs, den Sie auch unter „Einstellungen –› Indexing schedule –› Cron-Zeitplan“ nachholen oder ändern können. Ein Start des Indexers ein- bis viermal am Tag sollte ausreichen. Da die Syntax des Aufrufs nicht ganz trivial ist, sollten Sie für Einrichtung oder Änderung des Cronjobs stets die Recoll-Oberfläche verwenden.

Mit Recoll suchen: Im Recoll-Hauptfenster tippen Sie einen Suchbegriff ein und klicken auf „Suchen“. Die Ergebnisliste zeigt die gefundenen Dokumente und meist auch einen Textausschnitt, wo die Suchwörter vorkommen. Die Textmenge in der Ergebnisliste kann sowohl im Recoll-Fenster („Einstellungen –› GUI-Einstellungen“) als auch in der Browsermaske („Settings“) individuell angepasst werden. Mit der „Vorschau“ lassen Sie sich das Dokument in einer Textdarstellung und die hervorgehobenen Fundstellen anzeigen. „Öffnen“ lädt die Datei mit der zugehörigen Anwendung.

Die Suchsyntax ist nicht immer intuitiv: Die Option „Irgendein Ausdruck“ ist OR-Verknüpfung, „Alle Ausdrücke“ ist UND-Verknüpfung, Standard ist „Abfragesprache“. Manche Suchfehler vermeiden Sie dadurch, dass Sie Stellvertreterzeichen verwenden wie „*atom*“, was dann auch Flexionsformen und zusammengesetzte Wörter berücksichtigt („atomar“, „Atomkrieg“, „subatomar“). Wortfolgen in Anführungszeichen wie „auf der Reeperbahn“ definieren einen zusammengehörigen Suchbegriff. Recoll unterstützt zahlreiche Schlüsselwörter für Metadaten, abgesetzt durch einen Doppelpunkt: Die Suche nach „author:kafka“ würde also den Autor-Tag in PDFs oder Audiodateien ermitteln ( mehr zur Syntax ).

Recoll-Suche im Browser: Recoll bietet für den Netzwerkzugriff einen Webserver, für den Sie auf https://github.com/koniu/recollwebui unter „Download“ zwei Varianten finden. In den meisten Fällen wird die jüngere die passende sein, im Zweifel fragen Sie die genutzte Version mit „recoll -v“ ab. Erstellen Sie im Home-Verzeichnis einen Ordner „Recoll“ und entpacken Sie dort den Inhalt des kleinen ZIP-Archivs. Der Ordner enthält dann unter anderem das winzige Python-Script „webui-standalone.py“ für den Webserver. Damit dieser im Netzwerk funktioniert, müssen Sie eine Zeile modifizieren: Statt der Localhost-IP „127.0.0.1“ tragen Sie hier

parser.add_argument('-a', '-- addr', default='127.0.0.1' […] 

die IP des Servers ein. Danach können Sie den Suchserver mit

python webui-standalone.py 

starten. Jeder Browser im lokalen Netz erreicht die Suchoberfläche unter der Adresse [IP]:8080. Wenn der Serverdienst stets automatisch starten soll, erweitern Sie die Crontab des Benutzers, bei dem Sie die Recoll-Webui ins Home-Verzeichnis entpackt haben, um folgende Zeile (crontab -e): 

@reboot /usr/bin/python/home/[user]/[Recoll]/webui-standalone.py 

Die Pfadbestandteile „[user]“ und „[Recoll]“ passen Sie entsprechend an. 

Multimediasuche: Bild, Musik und Film 

Die Verwaltung, Kategorisierung und Suche von Multimedia-Dateien ist technisch anspruchsloser als eine Vollindexierung von Texten. Eingebettete und standardisierte Metadaten informieren Software und Nutzer. 

Fotos, Audiodateien, Filmformate und digitale Bücher enthalten neben dem eigentlichen Inhalt Informationen über die jeweilige Datei – etwa Aufnahmedatum, GPS-Daten, Künstler, Genre, Titel. Hinzu kommen freie Felder für Stichwörter und Bewertungen des Nutzers. Solche Metadaten sind plattformunabhängig und können von Anzeige- und Abspielsoftware unter Linux, Windows oder Mac-OS X ausgewertet oder ergänzt werden. Dieser Beitrag nennt empfehlenswerte Software unter Linux.

Film- und Audiodateien unter Kodi 

Das Mediencenter Kodi gehört zur besten Verwaltungs- und Wiedergabesoftware für Audio und Film (für die Fotoverwaltung eher nicht). Zu den Vorzügen von Kodi, das in allen Distributionen in den Paketquellen bereitsteht, gehören robustes und flottes Einlesen auch großer Mediensammlungen und flexible Scraper für Film- und Musikvideos. Scraper haben die Aufgabe, Filme, Serien und Videos anhand aller verfügbaren Informationen zu kategorisieren. Das beginnt beim Datei- und Ordnernamen, geht über die eingebetteten Metadaten und wird ergänzt durch Bild und Text aus Onlinediensten. Kodi hat nur Standardscraper vorinstalliert, die aber oft ausreichen. Zum Nachinstallieren aller verfügbaren Scraper hilft das Menü „Addons –› Herunterladen –› Informationsanbieter“.

Die Inhaltsanalyse setzt voraus, dass Sie beim Einbinden einer „Videoquelle“ den abschließenden Dialog „Inhalt festlegen“ mit der richtigen „Informationsquelle“ beantworten – also etwa mit „The Movie Database“. Kodi wird dann vieles erstaunlich richtig machen, aber sicher nicht fehlerfrei arbeiten: Irreführende Dateinamen, fehlende oder falsche Metadaten führen zu unvermeidlichen Kategorisierungspannen. Für die standardisierten ID3-Tags für Musikdateien (MP3, OGG, APE, Flac, WMA, MP4) gilt Ähnliches. Voraussetzung für eine erfolgreiche Organisation nach Metadaten ist die annähernde Vollständigkeit der Tags. Bei Sammlungen aus heterogenen Quellen ist das keineswegs die Regel: Viele Infos fehlen, ein und dasselbe Genre erscheint in etlichen Variationen, als Albuminterpret erscheint die Tracknummer und umgekehrt.

Dagegen hilft ein spezialisierter Tag-Editor wie Puddletag, der mit

sudo apt install puddletag 

unter Debian/Ubuntu schnell installiert ist. Mit „File –› Open Folder“ wechseln Sie in den gewünschten Ordner. Mit der Option „Subfolders“ (links unten) werden alle enthaltenen Musikdateien in einer datenbankmäßigen Übersicht angezeigt. Im Prinzip lässt sich jedes Tag-Feld manuell editieren (F2) – aber das ist nicht praktikabel. Effizient ist es hingegen, in einem Verzeichnis alle Datensätze zu markieren und dann links oben im Dropdown-Feld „Genre“ den passenden Eintrag zu wählen. Achten Sie darauf, dass alle anderen Felder „“ anzeigen – also das bisherige Tag behalten. Tatsächlich gespeichert wird erst nach „File –› Save“.

Spezialisten für die Bildersuche

Der Exif-Block ist der Standard für Metadaten, die Digitalkameras speichern. Jede Kamera schreibt das Aufnahmedatum, Kameras mit GPS auch Ortsinfos in die Datei (Geotags). Zur besseren Organisation der Bilder und Fotos lassen sich in den Exif-Block auch eigene Infos eintragen („Schlagwort“, „Stichwort“ oder „Markierung“). Systematische Personen-, Orte-, Aktionen-Tags sind unschlagbar, um Bilder schnell zu filtern.

In Shotwell gehen Sie auf „Datei –› Aus Ordner importieren“, wonach Sie die Option „Nur Verweise importieren“ wählen (andernfalls werden alle Dateien physisch kopiert). Die Tags werden automatisch eingelesen und in der Navigationsspalte angezeigt. Ein Klick auf einen Tag filtert sofort die passenden Dateien. Änderungen sind nach Rechtsklick und „Tags ändern“ für markierte Bilder jederzeit möglich. Außerdem gibt es Bewertungen, gespeicherte Suchfilter und eine chronologische Ereignissortierung.

gthumb kopiert bei der Option „Datei –› Importieren von –› Ordner“ physisch nach „~/Bilder“, was bei großen externen Bildersammlungen kaum erwünscht ist. Wählen Sie daher besser über die Navigationsspalte den ursprünglichen Quellordner mit den Bilddateien. Danach erscheint rechts oben über dem Anzeigefenster die Schaltfläche „Ordnen“. Wenn Sie hier „Schlagwort eingebettet“ wählen, werden alle Tags eingelesen. Diese zeigen sich danach in der Navigationsleiste unter „Kataloge–› Schlagwörter“. Änderungen oder Neudefinitionen von Tags erfolgen für die markierten Bilder nach Rechtsklick und der Option „Schlagworte“.

Digikam ist weit umfangreicher als die beiden genannten Programme – sowohl hinsichtlich der Verwaltungs- wie Bildbearbeitungsfunktionen. Das KDE-Programm funktioniert auch unter Gnome, ist dort aber aufgrund zahlreicher Paketabhängigkeiten ein großer Softwarebrocken (etwa 450 MB). Bei der Ersteinrichtung ist eine Frage des Assistenten entscheidend: Digikam kann zusätzliche Metainformationen wie Personennamen oder Schlagwörter entweder direkt in die Bilddatei schreiben oder nur in seine Datenbank. Ersteres hat den Vorteil, dass die Metadaten dann auch von anderen Programmen gelesen werden können, es macht Digikam allerdings etwas langsamer.

Ein Nachteil von Digikam ist die Tatsache, dass es beim „Importieren“ immer ganze Datenträger erfasst und keine einzelnen Ordner erlaubt. Wenn Sie eine USB-Festplatte mit großer Bildersammlung importieren, wird das Programm ohne Fortschrittsanzeige erst einmal einfrieren. Dann ist Warten und Geduld angesagt.

E-Book-Verwaltung mit Calibre 

Calibre ist auf E-Books spezialisiert (PDF, Mobi, CHM, Epub), ohne diese inhaltlich zu indexieren. Sie finden die gesuchten Bücher also über Metadaten und Coverinformationen. Calibre gibt es für alle Betriebssysteme unter https://calibre-ebook.com/download . Diese Anlaufstelle ist auch für Linux zu empfehlen, weil die Installation über die Paketquellen 

sudo apt install calibre 

nur ältere Versionen anbietet. Für den lokalen Einsatz spielt das keine große Rolle, die Serverkomponente hat aber in den aktuellen Versionen deutlich gewonnen. Das Downloadkommando 

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin 

können Sie von der oben genannten Downloadseite direkt ins Terminal kopieren. Calibre ist nach der Installation über das Hauptmenü zu erreichen.

Mit der Schaltfläche „Bücher hinzufügen“ starten und erweitern Sie eine Bibliothek. Den Massenimport von heterogenen Formaten ermöglicht die Unteroption „Bücher aus verschiedenen Verzeichnissen […]“. Damit integrieren Sie Sammlungen von PDF-, HTML-, Epub- und auch von Office-Formaten in die Calibre-Datenbank. Beachten Sie, dass Calibre alle Dateien physisch in den Ordner „~/Calibre-Bibliothek/“ kopiert. Beim Import versucht Software, jedes Buch anhand von Dateinamen und Metadaten zu katalogisieren. Fehler aufgrund unzulänglicher Metadaten sind auch hier unvermeidlich, können aber mit „Metadaten bearbeiten“ und mit der Hilfe von Onlinediensten („Metadaten herunterladen“) korrigiert werden.

Die Suche bestimmter Titel erfolgt im Suchfeld über dem Hauptfenster. Weitere Filtermöglichkeiten bieten Kategorien in der linken Navigationsleiste wie „Autoren“, „Formate“, „Bewertung“ oder „Schlagwörter“. Ist eine Bibliothek eingerichtet, kann Calibre diese auch im Netz anbieten. Für den Start der Serverkomponente genügt der Klick auf „Verbinden/Teilen –› Inhalteserver starten“. Danach informiert Sie ein weiterer Klick auf „Verbinden/Teilen“, unter welcher Adresse der Blbliotheksserver im Netz zu erreichen ist.