Transparente Heuhaufen
Suchen im Dateisystem
Finden in Sekunden
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.
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.
Textrecherche
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.



