Transparente Heuhaufen

Suchen im Dateisystem

01.09.2006
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.

Alternativ steht mit der Option -regex die Möglichkeit offen, reguläre Ausdrücke [8] einzubinden. Der Befehl prüft dabei, ob der reguläre Ausdruck auf den kompletten Pfad der Datei passt. Reguläre Ausdrücke sind sehr leistungsfähig und vielfältig.

Mit Find suchen Sie zudem nach anderen Dateieigenschaften wie der Dateigröße (-size), den Rechten (-perm), dem Benutzer (-user, -uid), der Gruppe (-group, -gid) sowie den Zeitpunktem des letzten Zugriffs (-atime, -amin, -anewer), der letzten Änderung (-mtime, -mmin) oder der Erstellung (-ctime, -cmin, -cnever).

So zeigt find -mtime -3 alle Dateien, deren Änderungsdatum sich innerhalb der letzten drei Tage verändert hat, während find -ctime +3 eine Liste aller Dateien erstellt, die mehr als drei Tagen alt sind.

Mit den Operatoren -and und -or verbinden Sie mehrere Ausdrücke; mit ! negieren Sie eine Suche. So findet find -name "*.txt" -and -ctime -3 alle Dateien, deren Namen auf *.txt enden und die jünger als 3 Tage sind, während find ! -name "*tmp*" alle Dateien findet, deren Name nicht tmp enthält.

Wie Find die Dateien anzeigt, das beeinflussen die Optionen -printf- oder -fprintf. So zeigt find -printf "%f %s\n" für jede Datei den Namen ohne Pfad sowie die Größe in Bytes.

Mit -exec führt Find für jede Datei den angegebenen Befehl aus. Die Schreibweise ist dabei etwas umständlich: So zeigt find -name *.jpg -exec jpeginfo \{\} \; zum Beispiel zu jedem JPEG-Bild die Auflösung und die Farbtiefe an, sofern der Befehl Jpeginfo installiert ist. Der Platzhalter {} markiert den Pfad zur gefundenen Datei und das Semikolon das Ende des Befehlsaufrufes. Die Escape-Zeichen (\) verhindern, dass die Shell Platzhalter und Semikolon für sich beansprucht.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Spürnasen
    Für jeden Zweck das Richtige: Die Suchwerkzeuge find und locate arbeiten Hand in Hand, which und whereis helfen bei besonderen Aufgaben.
  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Coole Tools schnelle Tipper
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...