find

find

find (zu deutsch finde) ist der Name eines UNIX-Programms 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 des POSIX-Standards (IEEE Std 1003.1), und als solches im Standardumfang jeder Unix-Variante zu finden.

Unter Microsoft Windows gibt es ebenfalls den Befehl find, jedoch dient er dort zum Durchsuchen von Dateien, eine Funktion die unter Unix üblicherweise von grep realisiert wird.

Inhaltsverzeichnis

Benutzung

find wird mit folgender Syntax aufgerufen:

find Startverzeichnis [Optionen] Test Aktion

Beispiel:
find / -name "[Xx]*"

Das Startverzeichnis kann ein absoluter oder relativer Pfad sein, muss aber auf jeden Fall angegeben werden. Möchte 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 +12000c

findet also alle Dateien des gesamten Verzeichnisbaums, die auf .txt enden und größer als 12000 Bytes sind.

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 24000c

findet z.B. alle Dateien, die genau 24000 Bytes groß sind. Ein Minus ist mit dem mathematischen Operator < gleichzusetzen. Bei folgendem Befehl werden also alle Dateien gefunden, die kleiner als 24000 Bytes sind:

find . -size -24000c

Umgekehrt findet ein + alle Dateien, die > dem Wert sind.

find . -size +24000c

findet also alle Dateien, die größer als 24000 Bytes sind.

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, löschen, 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.

Hier ein Beispiel, wie man mit verschachtelten exec-Befehlen automatische Archive erzeugen kann.

find . -mtime +$1 -type d -maxdepth 1 -exec echo erstelle {}.tar.bz2... \; -exec tar cjf {}.tar.bz2 {} \; -exec echo fertig \; -exec test -f {}.tar.bz2 \; -exec rm -r {} \;

Erläuterung: Der find-Befehl sucht mit der Option mtime und type nach Verzeichnissen, die älter sind als n Tage (n ist der erste Parameter von der Kommandozeile). Die Option maxdepth sorgt dafür, dass keine Unterverzeichnise ausgegeben werden. Anschließend wird mittels tar-Befehl ein bz2-Archiv erzeugt, geprüft ob es angelegt wurde und bei Erfolg wird das Ursprungsverzeichnis gelöscht (dazwischen werden Statusnachrichten ausgegeben).

execplus

Wenn man nicht für jede gefunde Datei ein neues Kommando starten will, dann verwendet man den Befehl:

find / -nouser -exec rm {} +

Das find-Kommando sammelt dabei solange Dateinamen bis die Längenbegrenzung für die Argumentliste erreicht ist. Das Leerzeichen, das Zeilenende und ähnliche Zeichen in Dateinamen werden dabei korrekt an das Programm rm übergeben.

Weitere Suchprogramme

Unter Unix gibt es ein paar weitere Suchprogramme.

grep

grep durchsucht einzelne Zeilen auf passende Ausdrücke.

locate

locate funktioniert ähnlich wie find, durchsucht aber nicht das Dateisystem sondern eine Datenbank, meist /var/lib/locatedb. Diese Datenbank ist eine Datei, in der für jede Datei des Systems ein Eintrag 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.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • find — [faɪnd] verb found PTandPP [faʊnd] [transitive] 1. if you find work or employment, you get a job or some work. If you find someone to do a job, you employ them to do that job: • Karen found a job with a major travel company after she completed… …   Financial and business terms

  • find — find  утилита поиска файлов, используемая в UNIX‐подобных операционных системах. Может производить поиск в одном или нескольких каталогах с использованием критериев, заданных пользователем. По умолчанию, find возвращает все файлы в рабочей… …   Википедия

  • Find — (zu deutsch finde) ist der Name eines 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 …   Deutsch Wikipedia

  • Find — утилита поиска файлов, используемая в UNIX‐подобных операционных системах. Может производить поиск в одной или нескольких директориях с использованием критериев, заданных пользователем. По умолчанию, find возвращает все файлы после текущего в… …   Википедия

  • Find — (f[imac]nd), v. t. [imp. & p. p. {Found} (found); p. pr. & vb. n. {Finding}.] [AS. findan; akin to D. vinden, OS. & OHG. findan, G. finden, Dan. finde, icel. & Sw. finna, Goth. fin[thorn]an; and perh. to L. petere to seek, Gr. pi ptein to fall,… …   The Collaborative International Dictionary of English

  • Find — est une commande UNIX permettant de chercher des fichiers dans un ou plusieurs répertoires selon des critères définis par l utilisateur. Par défaut, find retourne tous les fichiers contenus dans l arborescence du répertoire courant. find permet… …   Wikipédia en Français

  • find — est une commande UNIX permettant de chercher des fichiers dans un ou plusieurs répertoires selon des critères définis par l utilisateur. Par défaut, find retourne tous les fichiers contenus dans l arborescence du répertoire courant. find permet… …   Wikipédia en Français

  • find — [fīnd] vt. found, finding [ME finden < OE findan, akin to Ger finden, Goth finthan < IE base * pent , to walk, happen upon, find > L pons, a plank causeway, bridge] 1. to happen on; come upon; meet with; discover by chance 2. to get by… …   English World dictionary

  • Find — Saltar a navegación, búsqueda find es un comando común en sistemas Unix que se utiliza para encontrar archivos en un determinado directorio a partir de diversas reglas de búsqueda, tales como nombre exacto de archivo, fecha de creación, tamaño,… …   Wikipedia Español

  • find — ► VERB (past and past part. found) 1) discover by chance or deliberately. 2) recognize or discover to be present or to be the case. 3) ascertain by research or calculation. 4) Law (of a court) officially declare to be the case. 5) (find against… …   English terms dictionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”