Dateien suchen mit KDE |
Die einfachste Möglichkeit ist die Funktion "Dateien suchen" im Startmenü, die im wesentlichen der entsprechenden Funktion unter Windows nachempfunden ist.
Nachteil: sie war lähmend langsam (OffeneFrage: Warum?): 290 Sekunden für eine Komplettsuche nach "*.ttf" auf einer relativ frischen Installation auf /VerwendeteGeräte#PC1.
Dateien suchen mit dem Programm locate |
Über die Eingabe von
|
werden aus einem täglich regenerierten Cache alle passenden Dateien gelisted. Dabei werden nur allgemein zugängliche Dateien indiziert.
Eine allfällige manuelle Reindizierung (z.B. nach größeren Installationen) kann durch updatedb ausgelöst werden.
Dateien suchen mit dem FHS |
Der FHS (File Hierarchy Standard) legt fest welche Dateien wo zu liegen haben. Nach diesen Richtlinien lassen sich die meisten Systemfiles finden.
Dateien suchen mit dem Programm find |
Um Dateien zu suchen steht das Programm "find" zur Verfügung.
Die Parameter von find zerfallen in folgende Gruppen:
Einfache Suche mit dem Namen als Suchkriterium |
Um im ganzen Verzeichnisbaum Dateien zu finden und auszugeben, deren Dateiname zum Suchmuster "*.ttf" passt, kann man folgendes verwenden:
find / -name "*.ttf" -printWenn beim Aufruf aus einer Shell als Suchbedingung ein Muster in Verbindung mit -name verwendet wird, dann muss die automatische Erweiterung des Musters durch die Shell verhindert werden. Andernfalls wird der zu einer Liste passender Dateinamen erweiterte Ausdruck an find übergeben, was nur sehr selten das ist, was der Benutzer erreichen will. Die einfachste Möglichkeit die Erweiterung des Musters zu unterbinden ist, diesen in Anführungszeichen zu setzen.
nützliche Parameter |
Wenn man größere Dateisysteme gemountet hat (z.B. einen Netzwerkserver), dann ist
find /meist nicht mehr sinnvoll. Die Option -mount, z. B.
find / -mountbewirkt, dass gemountete Dateisysteme nicht durchsucht werden.
Mit der Option -type t kann die Suche auf bestimmte Dateiarten beschränkt werden:
find / -type d (liefert nur Directories) find / -type f (liefert nur File) find / -type l (liefert nur Links)
Mit den Optionen -mindepth n und -maxdepth n kann die Suche in der Tiefe eingeschränkt werden:
Der gesamte Verzeichnisbaum unter dem aktuellen Verzeichnis:
find . -type dNur die Unterverzeichnisse des aktuellen Verzeichnis:
find . -type d -maxdepth 1Die HTML-Files genau eine Ebene unter dem aktuellen Verzeichnis:
find . -type f -mindepth 2 -maxdepth -2 "*.html"
Ausblenden von unerwünschten Fehlerausgaben |
Gerade beim Durchsuchen des gesamten Verzeichnisbaumes ist es lästig, dass man als Benutzer auf viele Verzeichnisse stößt wo man keine Leserechte besitzt und die Suchergebnisse von entsprechenden Mitteilungen ("No Permission" oder "Keine Berechtigung") durchsetzt sind. Häufig soll verhindert werden, daß die Ausgabe durch eingestreute Fehlermeldungen unlesbar wird. Eine Möglichkeit dazu ist, die Fehlermitteilungen an einen Ort schicken, wo sie nicht stören. Mit einer zur Bourne Shell verträglichen Shell (bash, sh, ksh, ash, ...) also:
|
Mit einer zur C Shell kompatiblen Shell (csh, tcsh, ...) stellt sich das beliebte Problem, Standardausgabe und Fehlerausgabe zu trennen. Am leichtesten geht das mit einer Zwischendatei:
|
DateiumleitungUnterUnix? ist aber eigentlich ein eigenes Thema
Fortgeschrittenenkommentare |
Bei manchen find-Versionen (z. B. FreeBSD) ist der praktische Parameter -iname (case-insensitive Suche) nicht vorhanden.
Es gibt aber noch weitere Unterschiede, z. B. in der Ausgabe. Während unter der GNU Version von find die Ausgabe je Datei frei gestaltet werden kann:
|
besitzt die FreeBSD Version von find nur die Aktionen "-print", "-print0" und "-ls", die gewisse Ausgabeformate zur Verfügung stellen.
Expertenkommentare |
Quellen |
Gedanken |
Eigentlich wäre das doch ein guter Ansatzpunkt, um in die Linux-Entwicklung einzusteigen. Das KDE-find muss irgendeinen fundamentalen Fehler machen, um so viel Zeit zu verschwenden. Der Source des effizienten GNU-find ist ebenso verfügbar. Sich das anzusehen und zu versuchen das KDE-find zu verbessern, müsste eine lösbare minimale Aufgabe sein, bei der man die grundsätzlichen Abläufe kennenlernen kann. Kommentare? --hl