Aus LinuxUser 05/2005

Dateisuche mit find und locate (Seite 2)

find . -name "*.txt" -user bauni -atime -7 -ok cat "{}" ";"

Geschwindigkeitsvorteil

Das Durchsuchen ganzer Verzeichnisbäume dauert mit find selbst auf gewöhnlichen Desktop-Installationen bis zu mehreren Minuten. Schneller erfolgt die Suche nach bestimmten Dateinamen mit locate.

Es erreicht diesen Vorteil, indem es in einem eigenen Inhaltsverzeichnis nach Ergebnissen sucht, statt den Verzeichnisbaum selbst abzuklappern. Damit wird locate auch auf großen und überfüllten Festplatte in Sekundenschnelle fündig. Das funktioniert jedoch nur, wenn der Index auf dem aktuellen Stand ist. Daher führen die meisten Distributionen automatisch einmal täglich das Programm updatedb aus – es durchsucht die Festplatte und verzeichnet die Namen aller Dateien. Seit dem letzten Update hinzugekommene Dateien findet locate deshalb nicht.

Das Indizieren belastet Prozessor und Festplatte und beansprucht deshalb spürbar einen gewissen Teil der Rechnerressourcen. Um diesen lähmenden, täglich einige Minuten währenden Prozess zu vermeiden, installiert Suse locate und updatedb standardmäßig nicht mit. Als Nutzer dieser Distribution installieren Sie bei Bedarf das Paket findutils-locate nach.

Da locate ausschließlich nach Dateinamen sucht, fehlen viele Möglichkeiten von find. So bleibt als wichtigste Option der Parameter -i: Er hebt die Unterscheidung zwischen Groß- und Kleinschreibung auf. Dieses Beispiel findet alle Dateien im gesamten Dateisystem in deren Namen texte, dann eine beliebige Zeichenkette und danach index.te oder index.to vorkommen und die danach wiederum nur genau ein Zeichen enthalten:

$ locate -i *texte*index.t[eo]?
/home/bauni/texte/Diplomarbeit/DA/da_index.tex
/home/bauni/texte/Diplomarbeit/DA/da_index.toc
/home/bauni/texte/Vortrag/vortrag_index.tex
/home/bauni/texte/Diplomarbeit/index.tex
/home/bauni/texte/MMS-Abgabe/index.tex

Wo und welche?

Noch spezialisiertere Suchhilfen, die seit langem zu jedem Unix- und Linux-System gehören, heißen which und whereis. Letzteres verlangt als Suchbegriff eine ausführbare Datei und gibt deren kompletten Pfad, alle dazu gehörenden Konfigurations- und Hilfedateien sowie eventuell vorliegenden Quelltext zurück. Der Parameter -b beschränkt die Suche auf die ausführbare Datei, -m auf Hilfeseiten und -s auf den Quellcode. Dieses Beispiel liefert den Ort der ausführbaren Datei sowie die Hilfeseiten zum Kommando top:

$ whereis -bm top
top: /usr/bin/top /usr/share/man/man1/top.1.gz

Der Befehl which dagegen liefert ausschließlich den Verzeichnispfad einer ausführbaren Datei:

$ which firefox
/usr/bin/firefox

Schnell oder exakt

Im Alltag hat sich locate mittlerweile zum Standardwerkzeug zur schnellen Dateisuche gemausert. Auf Grund des Geschwindigkeitsnachteils benutzt find gewöhnlich nur, wer einige der zahlreichen Suchkriterien benötigt.

Infos

[1] Find und Locate: Marc André Selig, „Aus dem Nähkästchen geplaudert, Linux-Magazin 01/2005, S. 72 f.: http://www.linux-magazin.de/Artikel/ausgabe/2005/01/admin_workshop/admin_workshop.html

[2] Find: Elisabeth Bauer, „Meisterdetektive“, EasyLinux 01/2004, S. 72 f.: http://www.easylinux.de/Artikel/ausgabe/2004/01/072-find/

LinuxUser 05/2005 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: