Home / LinuxUser / 2006 / 09 / Suchen im Dateisystem

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1919 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zum Autor

Martin Steigerwald

Martin Steigerwald

Martin Steigerwald arbeitet als Trainer, Consultant und Systemadministrator bei der team(ix) GmbH in Nürnberg. Schwerpunkte seiner Tätigkeit sind Linux-Schulungen, die Konzeption, Installation und Wartung solider IT-Infrastruktur auf Basis von Debian Linux sowie Second Level Support für Linux als Business-Desktop bei Kunden von teamix(ix).


Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...