Find
aus Wikipedia, der freien Enzyklopädie
![]() |
Der korrekte Titel dieses Artikels lautet „find“. Diese Schreibweise ist aufgrund technischer Einschränkungen nicht möglich. |
find (zu deutsch "finde") ist ein UNIX-Programm zum Auffinden von Dateien und Verzeichnissen. Das Programm durchsucht bei jeder Suchanfrage direkt das Dateisystem. find gestattet eine Verfeinerung der Suche nach zahlreichen Kriterien wie etwa Zugriffs- oder Änderungszeit, Dateigröße, Ort, und je nach Variante noch zahlreiche andere. Es ist Teil der GNU Findutils (siehe Weblinks) und ist Teil des POSIX-Standards (IEEE Std 1003.1), und als solches im Standardumfang jeder UNIX-Variante zu finden.
Inhaltsverzeichnis |
[Bearbeiten] Benutzung
find wird mit folgender Syntax aufgerufen:
find [Optionen] Startverzeichnis Test Aktion Beispiel: find / -name "[Xx]*"
Das Startverzeichnis kann ein absoluter oder relativer Pfad sein, muss aber auf jeden Fall angegeben werden. Möcht man das aktuelle Verzeichnis durchsuchen, so gibt man einfach einen Punkt (.) ein. Für die Tests gibt es verschiedene Möglichkeiten. -name durchsucht den Pfad nach Dateien, deren Name mit dem Muster übereinstimmt und ist wohl der am häufigsten gebrauchte Test. Für eine Auflistung aller Tests kann man im Manual nachschlagen.
Wird, wie im Beispiel, die Aktion weggelassen, führt find automatisch -print aus. Für alternative Möglichkeiten kann man wieder im Manual nachschlagen. Die Funktion -exec wird unten noch näher erklärt.
Gibt man zwei aufeinanderfolgende Tests an, so findet find alle Dateien, auf die beide Tests zutreffen.
find / -name "*.txt" -size +12k
findet also alle Dateien des gesamten Verzeichnisbaums, die auf .txt enden und mindestens 12 Kilobyte groß sind.
[Bearbeiten] Numerische Werte
Ist das Suchkriterium bei find ein numerischer Wert, so gibt es einige Besonderheiten. Gibt man eine Zahl ohne Vorzeichen an, erhält man die Dateien, auf die die Zahl genau passt.
find . -size 24k
findet z.B. alle Dateien, die genau 24 Kilobyte groß sind. Ein Minus ist mit dem Mathematischen Operator <= gleich zu setzen. Bei folgendem Befehl werden also alle Dateien gefunden, die höchstens 24 Kilobyte groß sind:
find . -size -24k
Umgekehrt findet ein + alle Dateien, die >= dem Wert sind.
find . -size +24k
findet also alle Dateien, die mindestens 24 Kilobyte groß sind.
[Bearbeiten] exec
find kann Dateien nicht nur finden, sondern auch an andere Programme weiterleiten. Dafür gibt es die Aktion -exec. Will man z.B. alle Dateien, die Benutzern gehören, die nicht mehr existieren, so reicht der Befehl:
find / -nouser -exec rm {} \;
Nach der Aktion -exec folgt also der normale Programmaufruf für rm. Statt einer Datei existiert der Platzhalter "{}" (zwei geschweifte klammern). Dieser steht für alle Dateien, die find findet. Abgeschlossen werden muss der Befehl mit \; (Backslash, Semikolon). Dabei existiert das Risiko, dass man Befehle ausführt, die man eigentlich gar nicht ausführen will. So könnte in unserem Beispiel eine Systemdatei nur fälschlicherweise mit einer nicht existierenden UID erstellt worden sein. Um das zu vermeiden gibt es die Aktion -ok. Sie funktioniert genau wie -exec, fragt aber bei jeder Befehlszeile nach, ob sie ausgeführt werden soll.
[Bearbeiten] weiter Suchprogramme
Unter Unix gibt es ein paar weitere Suchprogramme.
[Bearbeiten] grep
grep durchsucht einzelne Zeilen auf passende Ausdrücke.
[Bearbeiten] locate
locate funktioniert ähnlich wie find, durchsucht aber nicht das Dateisystem sondern eine Datenbank, meist /var/lib/locatedb. Diese Datenbank ist eine Textdatei, in der für jede Datei das Systems eine Zeile existiert. Die Datenbank wird mit dem Befehl updatedb aktualisiert. Meist wird die Aktualisierung, weil zeitaufwendig, per cron durchgeführt.
locate arbeitet schneller als find, ist aber nur so aktuell wie die Datenbank.
[Bearbeiten] Weblinks
Kategorien: Unix | GNU