![]() |
|
||||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
|
||
|
TFT Monitor bei
Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich. Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps. Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung. Günstige Shareware Programme als direkte Downloads im Software Portal. Bis zu 70% sparen durch Preisvergleich. |
||
|
Martin Steigerwald
| README |
|
Wenn unter Linux einmal etwas nicht wie gedacht funktioniert, kann man sich in aller Regel schnell selbst weiterhelfen. Das setzt allerdings voraus, dass man die Tools zur Fehleranalyse beherrscht und mit den zahlreichen Informationsquellen auf dem System und im Internet umzugehen weiß. Unsere Serie "Hilfe zur Selbsthilfe" unterstützt Sie dabei. Die zweite Folge zeigt, wie Sie im Dateisystem verborgene Informationen aufspüren. |
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.
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 |
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, einen regulären Ausdruck [8] zu verwenden. 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.
Nachteil von Find ist die mitunter lange Suchzeit. Für eine schnelle Suche eignet sich der Befehl Locate besser, da er auf einen Index zurückgreift. Diesen Index erstellt das Programm Updatedb mit Hilfe des Befehls Find. Der Index enthält nur Dateinamen inklusive Pfade. Nach etwas anderen können Sie nicht suchen.
Ein Cron-Job sorgt für die regelmäßige Aktualisierung des Indexes [9]. Führen Sie als Root den Befehl updatedb aus, wenn Sie den Index manuell aktualisieren möchten. Cron verwirft Jobs komplett, wenn der Computer zu dem angegebenen Zeitpunkt nicht eingeschaltet ist. Das Programm Anacron dagegen führt den Job so bald wie möglich aus, wenn sich der Computer wieder in Betrieb befindet.
Der Befehl Locate versteht die gleichen Platzhalter wie Find, findet jedoch auch ohne diese Teilbereiche des Pfadnamens. Der Befehl locate README findet also die selben Dateien wie der Befehl locate *README*. Mit der Option -i suchen Sie unabhängig von Groß- und Kleinschreibung, mit -r anhand eines regulären Ausdrucks.
Der Befehl Locate beachtet bei der Anzeige des Ergebnisses die Zugriffsrechte nicht. Das wirft Probleme auf, wenn Updatedb die Indexdatenbank wie üblich mit vollen Root-Rechten erstellt. Ein regulärer Benutzer findet dann Dateien, die nur einen anderen Benutzer des Systems oder den Root-Benutzer etwas angehen. Auch wenn der Zugriff auf eine solche Datei verwehrt bleibt, weiß er zumindest von deren Existenz.
Dieses Problem umgeht Secure Locate (Slocate) [10], das nur Dateien anzeigt, die der Benutzer auch sehen darf. Der Befehl verwendet dabei einen eigenen Index, den Sie mit slocate -u oder wie gehabt mit updatedb aktualisieren. Für Debian gibt es ein Paket (slocate), während Suse-Anwender nicht umhin kommen, das Programm selbst zu kompilieren.
Die Suchbefehle Find und Locate zeigen Suchergebnisse an, wie sie kommen, anstatt sie alphabetisch zu sortieren. Leiten Sie die Ausgabe des Suchbefehls, wie in find -name *.txt | sort, an Sort weiter, um eine sortierte Ausgabe zu erhalten.
/usr/share/doc.Neben Find und Locate gibt es mit Which und Whereis noch zwei spezialisierte Suchprogramme, die nur in vorgegebenen Pfaden suchen. So ermittelt Which den Aufenthaltsort einer ausführbaren Datei im Suchpfad ($PATH), während Whereis zusätzlich nach Manpages und Quelltexten fahndet.
Mit Grep suchen Sie im Inhalt einer Datei. So sucht grep "Beispiel" artikel.html in der Datei artikel.html nach dem Begriff Beispiel. Mit der Option -i sucht grep unabhängig von Groß- und Kleinbuchstaben.
Wie Find und Locate unterstützt Grep Dateimuster. Mit grep "Beispiel" * suchen Sie in allen Dateien des aktuellen Verzeichnisses nach dem Begriff Beispiel und mit -r schalten Sie die rekursive Suche ein.
Nach Mustern suchen Sie mit Hilfe eines regulären Ausdrucks. So findet grep "B.*n" städte.txt in der Datei städte.txt sowohl Bonn als auch Berlin. Die Buchstaben B und n nimmt Grep dabei, wie sie sind. Der Punkt hingegen steht für ein beliebiges Zeichen und das Sternchen gibt an, dass ein solches keinmal oder beliebig oft vorkommen darf.
Der Befehl Grep kommt oft im Duo mit anderen Befehlen zum Einsatz. So schauen Sie mit dpkg -l | grep Paketname oder rpm -qa | grep Paketname, ob ein bestimmtes Debian- oder RPM-Paket installiert ist. Mit grep "Ausdruck" probieren Sie einen regulären Ausdruck interaktiv aus. Wie viele andere Befehle verwendet Grep die Standardeingabe, wenn Sie keine Datei angeben. Versuchen Sie es mit grep "B.*n" und geben Sie die Städtenamen Berlin, Bonn und Frankfurt ein.
Beim Aufräumen hilft eine Übersicht, welche Dateien und Verzeichnisse wieviel Platz auf der Festplatte belegen. Für einzelne Dateien zeigt der Befehl ls -l die Größe in Bytes an. Verwenden Sie ls -lh, um die Größe mundgerecht in Kilobytes, Megabytes oder Gigabytes umgerechnet zu bekommen.
Die Größe eines Verzeichnisses samt aller Unterverzeichnisse erfahren Sie mit dem Befehl du -sh. Die Größe der Unterverzeichnisse bekommen Sie angezeigt, wenn Sie die Option -s weglassen. Mit -a gibt der Befehl zusätzlich die Größe jeder Datei an.
Eine grafische Alternative zu Du stellt Filelight dar. Das KDE-Programm erstellt für ein Verzeichnis eine Tortengrafik, deren einzelne Tortenstücke angeben, wieviel Platz ein Verzeichnis oder eine Datei belegen. Klicken Sie auf ein Tortenstück, um es in der Ansicht zu zentrieren und so noch mehr Details zu erfahren. Mit dem Knopf, der einen Pfeil nach links zeigt, kommen Sie wieder zur vorherigen Ansicht zurück.
| Infos |
|
[1] Find und Locate: Christian Baun, "Spürnasen", LinuxUser 05/2005, S. 88, http://www.linux-user.de/ausgabe/2005/05/088-find/
[2] Beagle: Tim Schürmann, "Spürhund", LinuxUser 07/2005, S. 64, http://www.linux-user.de/ausgabe/2005/07/064-beagle/ [3] Kat: http://kat.mandriva.com [4] Rlocate: http://sourceforge.net/projects/rlocate/ [5] Grep: Heike Jurzik, "Stecknadel im Heuhaufen", LinuxUser 05/2004, S. 76, http://www.linux-user.de/ausgabe/2004/05/076-zubefehl/ [6] Imgseek: Carsten Schnober, "Immer das richtige Bild", LinuxUser 10/2005, S. 34 [7] Doodle: http://gnunet.org/doodle/ [8] Reguläre Ausdrücke: Martin Möller, "Strukturierte Suche", LinuxUser 08/2005, S. 90, http://www.linux-user.de/ausgabe/2005/08/090-regex/ [9] Cron: Heike Jurzik, "Punktlandung", LinuxUser 02/2006, S. 94, http://www.linux-user.de/ausgabe/2006/02/094-zubefehl/ [10] Slocate: http://sourceforge.net/projects/slocate/ |
| Der Autor |
|
Martin Steigerwald arbeitet als Systemadministrator, ein Schwerpunkt seiner Tätigkeit liegt dabei im Bereich Linux als Corporate Desktop. Er hat Linux schon vor über 10 Jahren auf seinem Amiga 4000 installiert und verwendet auch privat Linux -- vorzugsweise Debian -- auf einem IBM-Laptop. |
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite
|
Datenschutz |
© 2010 Linux New Media AG
[Linux-Magazin]
[LinuxUser]
[EasyLinux]
[Linux-Community]
[Ubuntu User]
[Linux Technical Review]
[Linux Magazine]
[Linux Pro Magazine]
[Ubuntu User]
[EasyLinux Poland]
[Linux Magazine Poland]
[Linux Magazine Brasil]
[EasyLinux Brasil]
[Linux Magazine Spain]