Aus LinuxUser 09/2006

Suchen im Dateisystem

Transparente Heuhaufen

Mehr als hunderttausend Dateien liegen in einem gut ausgestatteten Linux-System. Im eigene Home-Verzeichnis tummeln sich oft nicht weniger. Diverse Tools zur Dateisuche helfen, sich im Datendschungel zurecht zu finden.

Möglichkeiten, die Anzahl der Dateien zu vergrößern, gibt es viele: Ein interessantes Programm, ein Brief im Office-Programm, Fotos von der Digitalkamera, neue E-Mails oder aktuelle Musikdateien. Da fällt es manchmal schwer, die Übersicht zu behalten – oder auch mal aufzuräumen, wenn der freie Speicherplatz zur Neige geht.

Sowohl KDE (K-Menü | Dateien suchen) als auch Gnome (Orte | Nach Dateien suchen) bringen leistungsfähige Suchfunktionen mit. Das Gnome-Programm gnome-search-tool greift dabei auf den Befehl Locate [1] zurück, um nach Dateien mit bestimmten Namen zu finden.

Bei der Suche nach Dateiinhalten nutzt es den Befehl Find [1]. Das KDE-Werkzeug KFind verwendet den Befehl Locate nur, wenn Sie bei der Suche nach Dateinamen die Option Datei-Index verwenden aktivieren. Anderenfalls greift es auf eigene Suchroutinen zurück.

Ob Sie nun die grafischen Werkzeuge zur Dateisuche verwenden oder nicht: Sich mit den Grundlagen der Dateisuche zu beschäftigen, hilft zu verstehen, warum das Programm in einem konkreten Fall eine bestimmte Datei findet – oder eben nicht.

Grundprinzipien

Es gibt zwei unterschiedliche Vorgehensweisen, um eine Datei zu suchen: Bei der unmittelbaren Suche wandert das Suchprogramm rekursiv durch das gewünschte Verzeichnis und forscht anhand der angegebenen Kriterien nach der gewünschten Datei. Bei großen Verzeichnissen dauert die Durchlauf dementsprechend lange.

Die indexbasierte Suche hingegen funktioniert zweistufig: Ein Backend baut einen Index auf, den das Frontend verwendet, um Dateien aufzuspüren. Dieser Index enthält zu jeder Datei den Dateinamen und mitunter noch weitere Informationen. Das Frontend sucht demnach nur nach Informationen, die das Backend zuvor in den Index aufgenommen hat, und findet nur Dateien, die das Backend vorher indiziert hat.

Es gibt Ansätze, die Schnelligkeit indexbasierter Suche mit der Aktualität der direkten Suche zu verbinden. So verwenden Beagle ([2]) und Kat [3] den Inotify-Mechanismus des Linux-Kernels, ab Version 2.6.13 standardmäßig enthalten, um Änderungen im Dateisystem zu verfolgen und den Index aktuell zu halten. Das Programm Rlocate [4] verwendet dafür hingegen ein eigenes Kernel-Modul.

Suchkriterien beziehen sich oft auf Eigenschaften wie den Namen, das Datum oder die Rechte einer Datei. Manche beziehen zusätzlich den eigentlichen Inhalt der Datei oder Metadaten zur Datei mit ein. Insbesondere die Metadaten sind im Zusammenhang mit Desktopsuchmaschinen wie Beagle oder Kat im Gespräch.

Die Suche nach Inhalten und Metadaten setzt aber voraus, dass die Software den entsprechenden Dateitypen unterstützt. Während der Befehl Grep [5] das Dateiformat nicht auswertet, extrahiert KFind den Klartext von OpenOffice- und KOffice-Dokumenten. Ein Programm wie Imgseek [6] oder Gqview sucht sogar in Bildern nach Inhalten.

Suchprogramme

Programm Typ Suchkonzept Suchkriterien
Beagle Desktopsuche indexbasiert Inhalt und Eigenschaften der Datei, Metadaten
Doodle [7] befehlsbasierte Suche indexbasiert Dateiname, Metadaten, optional Dateiinhalt
Find befehlsbasierte Suche unmittelbar Dateieigenschaften
Grep befehlsbasierte Textrecherche unmittelbar Dateiinhalt
Gnome-search-tool Gnome-Dateisuche teils indexbasiert, teils unmittelbar Inhalt und Eigenschaften der Datei
Kat Desktopsuche indexbasiert Inhalt und Eigenschaften der Datei, Metadaten
KFind KDE-Dateisuche teils indexbasiert, teils unmittelbar Inhalt und Eigenschaften der Datei, Metadaten
Locate, Slocate, Rlocate einfache, schnelle Dateinamensuche via Befehl indexbasiert Dateiname

Unmittelbar

Der Befehl Find ist ein leistungsfähiger Vertreter der unmittelbaren Suche nach Dateieigenschaften. Geben Sie nur find ein, zeigt der Befehl rekursiv alle Dateien des aktuellen Verzeichnisses. Mit find -name "*.jpg" finden Sie alle Dateien, deren Name auf .jpg endet. Achten Sie darauf, das Suchmuster in Anführungszeichen zu setzen, damit die Shell es nicht verarbeitet.

Als Platzhalter verwenden Sie * für ein oder mehrere Zeichen sowie ? für genau ein Zeichen. Mit eckigen Klammern geben Sie Ziffern und Buchstabenbereiche an: Der Ausdruck [013] steht für die Ziffern 0, 1 und 3, während [a-d] den Bereich von a bis d repräsentiert.

Wollen Sie in einem anderen als dem aktuellen Verzeichnis suchen, geben Sie es vor dem Suchkriterium an, wie das Beispiel find /tmp -name "*.jpg" zeigt. Ersetzen Sie -name durch -iname, damit die Suche nicht zwischen Groß- und Kleinbuchstaben unterscheidet.

LinuxUser 09/2006 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: