www.wikidata.de-de.nina.az
Der Titel dieses Artikels ist mehrdeutig Siehe auch Fint find usr bin find ist ein Programm zur Durchmusterung von Filesystemen Es ist ein grundlegender Bestandteil der Softwareausstattung von UNIX Systemen und als solcher durch den POSIX Standard beziehungsweise den identischen Standards IEEE Std 1003 und ISO IEC 9945 1 definiert als mandatory erforderlicher Bestandteil gekennzeichnet und somit Teil der Single UNIX Specification Auch UNIX ahnliche Betriebssysteme verfugen in der Regel uber diesen Befehl Unter Microsoft Windows gibt es ebenfalls den Befehl find dieser durchsucht jedoch den Inhalt von Dateien und hat eher entfernte Ahnlichkeit mit dem Kommando grep Inhaltsverzeichnis 1 Geschichte 2 Arbeitsweise 2 1 exec 2 2 Zeitmessung und vergleiche 3 Hinweise und Einschrankungen 3 1 Numerische Argumente 3 2 Vorsicht bei exec 3 3 Execplus 3 4 und exec 3 5 Schutz vor unendlichem Regress 4 Nonstandard Varianten 5 Weblinks 6 EinzelnachweiseGeschichte BearbeitenDas erste find erschien in Fifth Edition Unix ca Juni 1974 als Teil des PWB UNIX Projekts Programmer s Workbench der in Research Unix 2 ubernommen wurde Es wurde von Richard C Dick Haight einem Mitglied der PWB UNIX Entwickler geschrieben ebenso wie cpio und expr 3 find und cpio wurden fur den gemeinsamen Einsatz entworfen Arbeitsweise BearbeitenAls typisches Kommandozeilen Utility ist das Verhalten finds durch die Sektion 12 2 des Standards Utility Syntax Guidelines geregelt 4 Ausgehend von einem anzugebenden Basisverzeichnis durchschreitet find die Filesystemstruktur rekursiv und erzeugt eine Liste von Filesystem Inhalten Files Directories etc die wenigstens in den meisten Fallen auf lt stdout gt ausgegeben wird Diese Liste kann durch einen oder mehrere Operanden nach verschiedenen Gesichtspunkten fortschreitend eingeschrankt werden find some dir print jeden Eintrag in some dir anzeigen find some dir type f print angezeigte Eintrage auf regulare Dateien beschranken find some dir type f name x print angezeigte Eintrage auf Dateien deren Namen mit x beginnt einschranken Es ist moglich mehrere solche Operanden durch logische Operationen UND ODER NICHT zu verknupfen wie auch durch Klammern die Prazedenz der Operanden zu beeinflussen So konnen auch komplexe Filtertypen realisiert werden Allen Operanden ist gemeinsam dass sie als Ergebnis ein logisches TRUE oder FALSE zuruckgeben aufgrund dessen die gerade untersuchte Entitat an der weiteren Verarbeitung teilnimmt bis sie ublicherweise am Schluss ausgegeben wird oder von derselben ausgeschlossen wird Es ist moglich das Ausgabeformat auf den reinen Dateinamen zu beschranken print oder auch eine Liste von Attributen in Tabellenform ls was eine Ausgabe ahnlich der des Kommandos ls ails bewirkt auszugeben exec Bearbeiten Eine besondere Stellung unter den Operanden nimmt exec ein Es erwartet als Argument ein einfaches oder auch zusammengesetztes Kommando in welchem der Name der gerade untersuchten Entitat durch das Symbol vertreten wird Damit ist es moglich fur eine eben erzeugte Liste von Filesystem Eintragen eine durch ein Kommando reprasentierte Aktion durchzufuhren Das Beispiel sucht in allen Dateien c in dem Directory some dir nach Aufrufen oder dem Code der Funktion myfunc die Datei dev null wird angegeben damit grep die Dateinamen der Fundstellen mit anzeigt find some dir type f name c exec grep myfunc dev null Daruber hinaus gibt exec als Ruckgabewert den Return Code des aufgerufenen Kommandos zuruck sodass es ebenfalls fur Filterungszwecke genutzt werden kann Falls im obigen Beispiel nur die Dateinamen der Dateien in denen die Funktion verwendet wird gesucht werden so kann dies durch find some dir type f name c exec grep q myfunc print geschehen Zeitmessung und vergleiche Bearbeiten Verschiedene Operanden atime ctime mtime ermoglichen das Vergleichen von Zeitstempeln von Dateien wobei die Vergleichszeitraume in Tagen angegeben werden Tatsachlich werden diese Zeitraume allerdings als Ergebnis einer Integer Division der Zeitdifferenz in Sekunden durch 86400 interpretiert Der Standard fuhrt in seinen Erlauterungen als hier vervollstandigtes Beispiel find some dir atime 2 an 1 das alle Dateien oder sonstigen Filesystem Entitaten findet deren Zeitpunkt des letzten Zugriffs zwischen 48 und 72 Stunden vor Ausfuhrung des Befehls liegt Hinweise und Einschrankungen BearbeitenNumerische Argumente Bearbeiten Verschiedene Operanden zum Beispiel size oder atime erwarten numerische Argumente Bei solchen gilt dass die Angabe n fur numerische Werte n immer genau n bedeutet n hingegen kleiner als n und n bedeutet grosser als n Vorsicht bei exec Bearbeiten Da oftmals beim Aufruf von find nicht feststeht wie viele Treffer schliesslich im Ergebnis Set vorliegen kann die Verwendung von exec zu einer unverhaltnismassigen Belastung des Systems fuhren da ja fur jeden Treffer ein durch vergleichsweise hohen Ressourcenverbrauch gekennzeichneter fork Systemcall durchzufuhren ist Execplus Bearbeiten Mit dem POSIX Standard konforme Implementationen kennen deshalb das den externen Aufruf abschliessende Plus Hier wird das externe Kommando mit einer Liste von Treffern gleichzeitig aufgerufen sodass die erwahnte Belastung des Systems durch viele fork s verringert wird Gleichzeitig aber wird der Ruckgabewert des Kommandos fur eine einzelne Datei unbestimmt sodass exec nicht mehr weiter als filternder Operand wirken kann Weitere Probleme bei der Verwendung von exec konnen sich bei komplexen Kommandos ergeben es ist zwar grundsatzlich moglich verschachtelte Kommandos zu verwenden aber letztlich ist find keine Shell und deshalb in der Interpretation solcher Schachtelungen beschrankt Insbesondere Shell ubliche Konstruktionen wie etwa die logische Verknupfung cmd1 amp amp cmd2 schlagen innerhalb von Kommandos in exec fehl und exec Bearbeiten Das Argument kann lediglich ein einziges Mal in einem exec Operanden verwendet werden nicht ofter Daruber hinaus muss es als einzelnes das heisst alleinstehendes Argument verwendet werden Die folgenden Konstruktionen sind deshalb alle ungultig find some where type f exec mv old find some where type f exec gzip gt packed files Fur solche Zwecke sollte ein Script geschrieben werden dem als Parameter der Dateiname ubergeben wird und das als Argument in exec eingesetzt wird Etwa fur das erste Beispiel echo mv 1 1 old gt tmp mymove sh chmod u x tmp mymove sh find some where type f exec tmp mymove sh Schutz vor unendlichem Regress Bearbeiten In der Praxis kann es durchaus vorkommen dass in Filesystemen durch Hardlinks oder Softlinks Endlosreferenzen aufgebaut werden Der POSIX Standard schreibt deshalb vor dass konforme Versionen diesen Umstand zu erkennen und die Rekursion abzubrechen haben 1 Nonstandard Varianten BearbeitenDas GNU Projekt verfugt uber einen Nachbau des Kommandos als Teil des findutils Pakets Es unterscheidet sich vom POSIX konformen Original in einigen Punkten Weblinks Bearbeiten a href http www opengroup org onlinepubs 9699919799 utilities find html find 1 a find files Open Group Base Specification b find 1 b in einer Verzeichnishierarchie nach Dateien suchen Debian GNU Linux Ausfuhrbare Programme oder Shell Befehle Handbuchseite b find 1 b walk a file hierarchy OpenBSD General Commands Manual Linux and Unix find command tutorial with examples engl Einzelnachweise Bearbeiten a b c find Opengroup Base Specifications Issue 6 Abgerufen am 8 Marz 2018 englisch Die Bezeichnung wurde allerdings erst ab 1978 fur diese Entwicklungslinie gebrauchlich um sie von PWB UNIX und MERT abzugrenzen siehe Bell System Technical Journal Vol 57 No 6 Pt 2 Jul Aug 1978 M Douglas McIlroy A Research Unix reader annotated excerpts from the Programmer s Manual 1971 1986 pdf Abgerufen am 8 Marz 2018 englisch The Open Group Base Specifications Issue 7 2018 edition Kap 12 Utility Conventions Abgerufen am 15 Mai 2019 englisch Abgerufen von https de wikipedia org w index php title Find amp oldid 233523801