.\" -*- coding: UTF-8 -*- .\" -*- nroff -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH FIND 1 '\" t .SH BEZEICHNUNG find \- in einer Verzeichnishierarchie nach Dateien suchen .SH ÜBERSICHT \fBfind\fP [\-H] [\-L] [\-P] [\-D Fehlersuchoptionen] [\-OStufe] [Startpunkt …\&] [Ausdruck] . .SH BESCHREIBUNG Diese Handbuchseite beschreibt die GNU\-Version von \fBfind\fP. GNU\-\fBfind\fP durchsucht die Verzeichnisbäume, die ihren Ursprung bei den angegebenen Dateinamen haben und wertet dabei den Ausdruck von links nach rechts entsprechend der Operatorenrangfolge aus (siehe Abschnitt OPERATOREN), bis das Ergebnis ermittelt ist (die linke Seite falsch ist für \fIUND\fP\-Operatoren und wahr für \fIODER\fP\-Operatoren). Anschließend fährt \fBfind\fP mit der nächsten Datei fort. Wird kein Startpunkt angegeben, wird ».\&« angenommen. .PP Falls Sie \fBfind\fP in einem Umfeld benutzen, in dem Sicherheit wichtig ist (zum Beispiel, um Verzeichnisse zu durchsuchen, die für andere Anwender schreibbar sind), sollten Sie das Kapitel »Security Considerations« der Findutils\-Dokumentation lesen, die \fBFinding Files\fP heißt und den Findutils beigefügt ist. Dieses Dokument enthält außerdem mehr Einzelheiten und Erörterungen als diese Handbuchseite, so dass Sie es als eine nützlichere Informationsquelle empfinden könnten. . .SH OPTIONEN Die Optionen \fB\-H\fP, \fB\-L\fP und \fB\-P\fP steuern den Umgang mit symbolischen Links. Darauf folgende Befehlszeilenparameter werden als zu untersuchende Datei\- oder Verzeichnisnamen betrachtet, bis ein Parameter mit einem »\-« beginnt oder ein »(« oder »!«, ist. Solche und alle folgenden Parameter werden als Ausdruck interpretiert, der beschreibt, wonach gesucht werden soll. Wenn kein Pfad angegeben wurde, wird das aktuelle Verzeichnis genommen. Wenn kein Ausdruck angegeben ist, wird der Ausdruck \fB\-print\fP benutzt (aber Sie sollten vermutlich sowieso in Betracht ziehen, stattdessen \fB\-print0\fP zu verwenden). .PP Dieses Handbuch spricht von »Optionen« innerhalb einer Liste von Ausdrücken. Diese Optionen steuern das Verhalten von \fBfind\fP, werden aber direkt nach dem letzten Pfadnamen angegeben. Die fünf »echten« Optionen \fB\-L\fP, \fB\-P\fP, \fB\-D\fP und \fB\-O\fP müssen wenn dann vor dem ersten Pfadnamen erscheinen. Außerdem könnte ein doppeltes Minuszeichen \fB\-\-\fP theoretisch benutzt werden, um zu signalisieren, dass die verbleibenden Argumente keine Optionen sind, aber das funktioniert nicht wirklich, da \fBfind\fP das Ende der folgenden Pfadargumente ermittelt: Es liest bis zu einem Ausdrucksargument (das auch mit »\-« beginnt). Falls nun ein Pfadargument mit einem »\-« beginnen würde, dann würde \fBfind\fP dieses stattdessen als Ausdrucksargument auffassen. Um sicher zu stellen, dass alle Startpunkte als solche aufgefasst werden, und insbesondere um zu verhindern, dass durch die aufrufende Shell expandierte Platzhaltermuster fälschlicherweise als Ausdrucksargumente interpretiert werden, ist es daher im Allgemeinen sicherer, Platzhaltern oder fragwürdigen Pfadnamen entweder »./« voranzustellen oder absolute Pfadnamen zu verwenden, die mit »/« beginnen. .IP \-P keinen symbolischen Links folgen. Dies ist das Standardverhalten. Wenn \fBfind\fP Dateien untersucht oder Informationen über diese ausgibt und die Datei ein symbolischer Link ist, dann müssen die Informationen des symbolischen Links selbst verwendet werden. .IP \-L symbolischen Links folgen. Wenn \fBfind\fP eine Datei untersucht oder Informationen über diese ausgibt, dann müssen die Informationen der Datei verwendet werden, auf die der symbolische Link verweist, nicht die des Links selbst (es sei denn, der symbolische Link ist kaputt oder \fBfind\fP nicht in der Lage, die Datei zu untersuchen, auf die der Link zeigt). Die Verwendung dieser Option impliziert die Option \fB\-noleaf\fP. Wenn Sie später die Option \fB\-P\fP verwenden, wird \fB\-noleaf\fP immer noch Auswirkungen haben. Wenn \fB\-L\fP aktiv ist und \fBfind\fP während seiner Suche einen symbolischen Link zu einem Unterverzeichnis vorfindet, wird das Unterverzeichnis durchsucht, auf das der symbolische Link zeigt. .IP Wenn die Option \fB\-L\fP in Kraft ist, wird das Prädikat \fB\-type\fP immer auf den Typ der Datei angewendet, auf die ein symbolischer Link zeigt, anstatt auf den Link selbst (es sei denn, der symbolische Link ist kaputt). Aktionen die symbolische Links zerstören, während \fBfind\fP ausgeführt wird (zum Beispiel \fB\-delete\fP), können verwirrendes Verhalten verursachen. Die Verwendung von \fB\-L\fP bewirkt, dass die Prädikate \fB\-lname\fP und \fB\-ilname\fP immer falsch zurückliefern. .IP \-H keinen symbolischen Links folgen, es sei denn, die Parameter in der Befehlszeile werden ausgewertet. Wenn \fBfind\fP Dateien untersucht oder Informationen über diese ausgibt, müssen die verwendeten Informationen vom symbolischen Link selbst benutzt werden. Die einzige Ausnahme dieses Verhaltens ist, wenn eine in der Befehlszeile angegebene Datei ein symbolischer Link ist und dem Link gefolgt werden kann. In dieser Situation werden die Informationen der Datei genommen, auf die der symbolische Link verweist (das bedeutet, dass dem Link gefolgt wird). Die Informationen über den Link selbst dienen als Rückgriff für den Fall, dass die Datei, auf die der symbolische Link verweist, nicht untersucht werden kann. Wenn \fB\-H\fP in Kraft ist und einer der Pfade, die auf der Befehlszeile angegeben wurden, ein symbolischer Link zu einem Verzeichnis ist, werden die Inhalte dieses Verzeichnisses untersucht (was natürlich \fB\-maxdepth\ 0\fP verhindern würde). .P Falls mehr als eine der Optionen \fB\-H\fP, \fB\-L\fP und \fB\-P\fP angegeben ist, setzt jedes die anderen außer Kraft; das letzte, das auf der Befehlszeile erscheint, gilt. Die Option \fB\-P\fP ist die Voreinstellung. Wenn weder \fB\-H\fP noch \fB\-L\fP angegeben wurden, ist es, als wäre dies angegeben worden. GNU\-\fBfind\fP fragt oft Datei\-Informationen während der Verarbeitung der Befehlszeile selbst ab, bevor irgendeine Suche begonnen hat. Diese Optionen beeinflussen auch, wie diese Argumente verarbeitet werden. Insbesondere gibt es einige Tests, die Dateien auf der Befehlszeile mit einer aktuell betrachteten Datei vergleichen. Die Datei, die auf der Befehlszeile angegeben wird, wird auf jeden Fall untersucht und einige Ihrer Eigenschaften werden gespeichert. Falls die genannte Datei ein symbolischer Link ist und die Option \fB\-P\fP in Kraft ist (oder falls weder \fB\-H\fP noch \fB\-L\fP angegeben wurden), wird die für den Vergleich benutzte Information aus den Eigenschaften des symbolischen Links genommen. Anderenfalls wird sie aus den Eigenschaften der Datei genommen, auf die der Link verweist. Falls \fBfind\fP dem Link nicht folgen kann (zum Beispiel, weil es nicht über ausreichende Rechte verfügt oder der Link auf eine nicht existierende Datei verweist), werden die Eigenschaften des Links selbst benutzt. .P Wenn die Optionen \fB\-H\fP oder \fB\-L\fP in Kraft sind, wird jeder symbolische Link als Argument von \fB\-newer\fP dereferenziert und der Zeitstempel wird von der Datei genommen, auf die der symbolische Link verweist. Die gleichen Erwägungen gelten für \fB\-newerXY\fP, \fB\-anewer\fP und \fB\-cnewer\fP. Die Option \fB\-follow\fP hat ähnliche Auswirkungen wie \fB\-L\fP, obwohl sie an dem Punkt in Kraft tritt, an dem sie erscheint (sprich, wenn \fB\-L\fP nicht benutzt wird, aber \fB\-follow\fP, werden alle symbolischen Links, die nach \fB\-follow\fP auf der Befehlszeile erscheinen, vorher dereferenziert). .IP "\-D Debug\-Optionen" Diagnoseinformationen ausgeben; dies kann hilfreich sein, um Probleme zu diagnostizieren, warum \fBfind\fP nicht das tut, was Sie möchten. Die Liste der Debug\-Optionen sollte durch Kommas getrennt sein. Kompatibilität der Debug\-Optionen ist zwischen den unterschiedlichen Versionen der Findutils nicht gewährleistet. Um eine vollständige Liste der gültigen Optionen zu erhalten, lesen Sie die Ausgabe von \fBfind \-D\ help\fP. Gültige Debug\-Optionen sind unter anderem: .RS .IP exec zeigt Diagnostikinformationen mit Bezug zu \-exec, \-execdir, \-ok und \-okdir an. .IP opt gibt Diagnoseinformationen bezüglich der Optimierung des Ausdrucksbaums aus; siehe die Option \-O. .IP rates gibt eine Zusammenfassung aus, die angibt, wie oft jedes Prädikat erfolgreich war oder fehlschlug. .IP search durchläuft den Verzeichnisbaum ausführlich. .IP stat meldet, wenn Dateien mit den Systemaufrufen \fBstat\fP und \fBlstat\fP untersucht werden. Das Programm \fBfind\fP versucht, die Anzahl solcher Aufrufe zu minimieren. .IP tree zeigt den Ausdrucksbaum in seiner originalen und optimierten Form. .IP all aktiviert alle anderen Debug\-Optionen (außer \fBhelp\fP). .IP help erklärt die Debugging\-Optionen. .RE .IP \-OStufe aktiviert Abfragenoptimierung. Das Programm \fBfind\fP ordnet Tests neu an, um die Ausführung zu beschleunigen, ohne das Gesamtergebnis zu ändern; das heißt, Prädikate mit Seiteneffekten werden im Gegensatz zu anderen nicht neu angeordnet. Die Optimierungen die auf jeder Optimierungsstufe durchgeführt werden, sind wie folgt. .RS .IP 0 entspricht der Optimierungsstufe 1 .IP 1 Dies ist die Standardoptimierungsstufe und entspricht dem traditionellen Verhalten. Ausdrücke werden neu angeordnet, so dass Tests, die nur auf den Namen der Dateien basieren (zum Beispiel \fB\-name\fP und \fB\-regex\fP) zuerst durchgeführt werden. .IP 2 Irgendwelche \fB\-type\fP\- oder \fB\-xtype\fP\-Tests werden nach allen Tests, die nur auf Dateinamen basieren, aber vor Tests, die Informationen aus dem Inode benötigen, durchgeführt. Auf vielen modernen Versionen von Unix werden Dateitypen durch \fBreaddir()\fP zurückgegeben und daher sind diese Prädikate schneller auszuwerten als Prädikate, die zuerst \fBstat\fP für die Datei ausführen müssen. Wenn Sie beim Start von \fBfind\fP das Prädikat \fIFOO\fP für \fB\-fstype\fP verwenden und einen unbekannten Dateisystemtyp \fIFOO\fP angeben (in »/etc/mtab« aufgeführt), entspricht dies dem Prädikat \fB\-false\fP. .IP 3 Auf dieser Optimierungsstufe ist der vollständig kostenbasierte Optimierer aktiviert. Die Reihenfolge der Tests wird geändert, so dass günstige (d.h. schnelle) Tests zuerst und die teureren später durchgeführt werden, falls nötig. Innerhalb jeder Kostenebene werden Prädikate früher oder später ausgewertet, je nachdem, ob sie wahrscheinlich erfolgreich sein werden oder nicht. Für \fB\-o\fP werden Prädikate, die wahrscheinlich erfolgreich sind, früher ausgewertet und für \fB\-a\fP werden Prädikate, die wahrscheinlich fehlschlagen, früher ausgewertet. .RE .IP Der kostenbasierte Optimierer hat eine feste Vorstellung davon, wie wahrscheinlich ein gegebener Test erfolgreich ist. In einigen Fällen trägt die Wahrscheinlichkeit einer bestimmten Eigenheit des Tests Rechnung (zum Beispiel wird von \fB\-type\ f\fP angenommen, dass es eher erfolgreich ist, als \fB\-type\ c\fP). Der kostenbasierte Optimierer wird derzeit untersucht. Falls er nicht wirklich die Leistung von \fBfind\fP verbessert, wird er wieder entfernt. Im umgekehrten Fall werden Optimierungen, die beweisen, dass sie zuverlässig, robust und effektiv sind, im Lauf der Zeit auf niedrigeren Optimierungsstufen aktiviert. Das Standardverhalten (d.h. Optimierungsstufe 1) wird jedoch nicht in der 4.3.x\-Veröffentlichungsserie geändert. Die Test\-Suite Findutils führt all die Tests auf \fBfind\fP auf jeder Optimierungsstufe aus und stellt sicher, dass das Ergebnis das Gleiche ist. . .SH AUSDRUCK Der Teil der Befehlszeile nach der Liste der Startpunkte ist der \fIAusdruck\fP. Dies ist eine Abfragespezifikation, die die Suche nach übereinstimmenden Dateien und den Umgang mit den gefundenen Dateien beschreibt. Ein Ausdruck ist eine Abfolge von: .IP Tests Tests geben »wahr« oder »falsch« zurück, normalerweise auf Basis einer Eigenschaft einer zu berücksichtigenden Datei. Der Test \fB\-empty\fP beispielsweise gibt »wahr« zurück, wenn die Datei leer ist. .IP Aktionen Aktionen haben Folgeeffekte (zum Beispiel Meldungen in der Standardausgabe) und geben entweder »wahr« oder »falsch« zurück, abhängig davon, ob die Aktion erfolgreich war oder nicht. Die Aktion \fB\-print\fP beispielsweise gibt den Namen der aktuellen Datei in der Standardausgabe aus. .IP "Globale Optionen" Globale Optionen beeinflussen die Wirkung der Tests und Aktionen, die als Teil der Befehlszeile angegeben werden. Globale Optionen geben stets »wahr« zurück. Die Option \fB\-depth\fP beispielsweise durchsucht das Dateisystem in der angegebenen Tiefe. .IP Positionsoptionen Positionsoptionen beeinflussen nur Tests, die darauf folgen. Positionale Optionen geben stets »wahr« zurück. Die Option \fB\-regextype\fP beispielsweise ist positional. Sie gibt den »Dialekt« der regulären Ausdrücke an, die danach in der Befehlszeile angegeben werden. .IP Operatoren Operatoren verbinden die anderen Elemente innerhalb des Ausdrucks. Beispielsweise stellen \fB\-o\fP ein logisches ODER und \fB\-a\fP ein logisches UND dar. Fehlt ein Operator, wird \fB\-a\fP angenommen. .P Die Aktion \fB\-print\fP wird auf allen Dateien, für die der gesamte Ausdruck zutrifft, durchgeführt, außer sie enthält eine von \fB\-prune\fP oder \fB\-quit\fP abweichende Aktion. Aktionen, die die Vorgabe \fB\-print\fP blockieren sind \fB\-delete\fP, \fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP, \fB\-okdir\fP, \fB\-fls\fP, \fB\-fprint\fP, \fB\-fprintf\fP, \fB\-ls\fP, \fB\-print\fP und \fB\-printf\fP. Die Aktion \fB\-delete\fP wirkt auch wie eine Option (da sie \fB\-depth\fP impliziert). .SS POSITIONSOPTIONEN Positionsoptionen geben stets »wahr« zurück. Sie beeinflussen nur Tests, die danach in der Befehlszeile aufgeführt werden. .IP \-daystart misst Zeiten (für \fB\-amin\fP, \fB\-atime\fP, \fB\-cmin\fP, \fB\-ctime\fP, \fB\-mmin\fP und \fB\-mtime\fP) vom Beginn des aktuellen Tages anstelle der letzten 24 Stunden. Diese Option beeinflusst nur die Tests, die weiter hinten in der Befehlszeile erscheinen. .IP \-follow missbilligt; verwenden Sie stattdessen die Option \fB\-L\fP; dereferenziert symbolische Links; impliziert \fB\-noleaf\fP. Die Option \fB\-follow\fP beeinflusst nur jene Tests, die nach ihr auf der Befehlszeile erscheinen. Wenn die Option \fB\-H\fP oder \fB\-L\fP nicht angegeben wird, ändert die Position von \fB\-follow\fP das Verhalten des Prädikats \fB\-newer\fP. Alle Dateien, die als Argumente von \fB\-newer\fP aufgezählt werden, werden dereferenziert, wenn es sich bei ihnen um symbolische Links handelt. Das gilt auch für \fB\-anewer\fP und \fB\-cnewer\fP. Ähnlich wird das Prädikat \fB\-type\fP immer auf den Typ der Datei angewendet, auf den der symbolische Link zeigt und nicht auf den Link selbst. Die Verwendung von \fB\-follow\fP hat zur Folge, dass die Prädikate \fB\-lname\fP und \fB\-ilname\fP immer falsch zurückliefern. .IP "\-regextype \fITyp\fP" Ändert die Syntax regulärer Ausdrücke, die von \fB\-regex\fP\- und \fB\-iregex\fP\-Tests verstanden werden, die später auf der Befehlszeile auftreten. Die bekannten Ausdruckstypen können Sie mit \fB\-regextype\ help\fP anzeigen lassen. Das Texinfo\-Handbuch (Abschnitt SIEHE AUCH) erklärt die Bedeutung verschiedener Typen regulärer Ausdrücke und deren Unterschiede. .IP "\-warn, \-nowarn" schaltet Warnungen ein oder aus. Diese Warnungen betreffen nur die Benutzung der Befehlszeile, nicht für irgendwelche Bedingungen, auf die \fBfind\fP beim Durchsuchen von Verzeichnissen stoßen könnte. Das Standardverhalten entspricht \fB\-warn\fP, falls die Standardeingabe ein Terminal ist und andernfalls \fB\-nowarn\fP. Wenn eine Warnmeldung relativ zur Befehlsausführung erzeugt wird, dann wird der Exit\-Status von \fBfind\fP davon nicht beeinflusst. Ist die Umgebungsvariable POSIXLY_CORRECT gesetzt und \fB\-warn\fP wird ebenfalls verwendet, dann kann nicht exakt bestimmt werden, welche Warnungen aktiv sind, falls Warnmeldungen auftreten. .SS "GLOBALE OPTIONEN" Globale Optionen geben stets »wahr« zurück. Sie wirken sich auch auf Tests aus, die davor in der Befehlszeile stehen. Um Verwirrung vorzubeugen, sollten globale Optionen in der Befehlszeile nach der Liste der Startpunkte angegeben werden, vor dem ersten Test, der ersten Positionsoption oder der ersten Aktion. Wenn Sie eine globale Option an einer anderen Stelle angeben, gibt \fBfind\fP eine Warnung aus, dass dies verwirrend sein könnte. Die globalen Optionen erscheinen nach der Liste der Startpunkte. Daher sind sie nicht von der gleichen Art wie beispielsweise die Option \fB\-L\fP. .IP \-d ein Synonym für \-depth, für die Kompatibilität mit FreeBSD, NetBSD, MacOS X und OpenBSD. .IP \-depth bearbeitet den Inhalt jedes Verzeichnisses vor dem Verzeichnis selbst. Die Aktion \-delete impliziert ebenfalls \fB\-depth\fP. .IP "\-help, \-\-help" gibt eine Zusammenfassung der Verwendung von \fBfind\fP aus und wird beendet .IP \-ignore_readdir_race Normalerweise wird \fBfind\fP eine Fehlermeldung ausgeben, wenn das Ausführen von Stat für eine Datei fehlschlägt. Falls Sie diese Option angeben und eine Datei in der Zeit zwischen dem Lesen des Namens im Verzeichnis durch \fBfind\fP und der Zeit gelöscht wurde, in der Stat für die Datei ausgeführt wird, wird keine Fehlermeldung ausgegeben. Dies gilt auch für Dateien und Verzeichnisse, deren Namen auf der Befehlszeile angegeben wurden. Diese Option tritt dann in Kraft, wenn die Befehlszeile gelesen wird, was bedeutet, dass Sie nicht einen Teil des Dateisystem durchsuchen können, bei dem diese Option eingeschaltet ist und einen Teil, bei dem diese Option ausgeschaltet ist (falls Sie dies tun müssen, werden Sie stattdessen zwei \fBfind\fP\-Befehle absetzen müssen, einen mit und einen ohne der Option. Desweiteren wird \fBfind\fP mit der Option \fB\-ignore_readdir_race\fP Fehler der Aktion \fB\-delete\fP ignorieren, falls die Datei verschwunden ist, seit das Elternverzeichnis gelesen wurde: es wird keine Fehlerdiagnosen ausgeben und der Rückkehr\-Code der Aktion \fB\-delete\fP wird wahr sein. .IP "\-maxdepth \fIEbenen\fP" steigt höchstens \fIEbenen\fP (eine nicht negative Ganzzahl) Ebenen im Verzeichnisbaum unterhalb der Startpunkte hinab. \fB\-maxdepth\ 0\fP bedeutet, dass die Tests und Aktionen nur auf die Startpunkte angewendet werden. .IP "\-mindepth \fIEbenen\fP" keine Tests oder Aktionen auf Ebenen kleiner als \fIEbenen\fP (eine nicht negative Ganzzahl) anwenden. \fB\-mindepth\ 1\fP bedeutet, dass alle Dateien mit Ausnahme Startpunkte selbst verarbeitet werden. .IP \-mount keine Verzeichnisse auf anderen Dateisystemen hinabsteigen. Ein alternativer Name für \fB\-xdev\fP aus Kompatibilitätsgründen mit anderen Versionen von \fBfind\fP. .IP \-noignore_readdir_race den Effekt \fB\-ignore_readdir_race\fP ausschalten .IP \-noleaf nicht optimieren mit der Annahme, dass Verzeichnisse zwei Unterverzeichnisse weniger enthalten, als ihre Anzahl harter Links. Diese Option wird benötigt, wenn Dateisysteme durchsucht werden, die nicht den Konventionen von Unix\-Verzeichnis\-Links folgen, wie CD\-ROM\-, MS\-DOS\-Dateisysteme oder AFS\-Datenträgereinhängepunkte. Jedes Verzeichnis auf einem normalen Unix\-Dateisystem hat mindestens zwei harte Links: seinen Namen und seinen ».\&«\-Eintrag. Zusätzlich haben seine Unterverzeichnisse (falls vorhanden) jeweils einen »..\&«\-Eintrag, der auf dieses Verzeichnis verweist. Wenn \fBfind\fP ein Verzeichnis untersucht, weiß es, nachdem es zwei Unterverzeichnissen weniger als der Links\-Anzahl des Verzeichisses begegnet ist, dass der Rest der Einträge des Verzeichnisses keine Verzeichnisse sind (Blätter im Verzeichnisbaum). Falls nur die Namen der Dateien untersucht werden müssen, gibt es keinen Grund Stat für sie auszuführen; dies führt zu einer spürbaren Erhöhung der Suchgeschwindigkeit. .IP "\-version, \-\-version" gibt die Versionsnummer von \fBfind\fP aus und wird beendet .IP \-xdev keine Verzeichnisse auf anderen Dateisystemen hinabsteigen .SS TESTS Einige Tests, zum Beispiel \fB\-newerXY\fP und \fB\-samefile\fP erlauben den Vergleich der aktuell untersuchten Datei und irgendwelchen Referenzdateien, die auf der Befehlszeile angegeben wurden. Wenn diese Tests benutzt werden, wird die Interpretation der Referenzdatei durch die Optionen \fB\-H\fP, \fB\-L\fP, \fB\-P\fP und jedem vorhergehenden \fB\-follow\fP festgelegt, die Referenzdatei wird nur einmal zu dem Zeitpunkt untersucht, an dem die Befehlszeile ausgewertet wird. Falls die Referenzdatei nicht untersucht werden kann (weil zum Beispiel der Systemaufruf \fBstat\fP(2) dafür fehlschlägt), wird eine Fehlermeldung ausgegeben und \fBfind\fP endet mit einem Status ungleich null. .P Ein numerisches Argument \fIn\fP kann an die Tests übergeben werden (wie \fB\-amin\fP, \fB\-mtime\fP, \fB\-gid\fP, \fB\-inum\fP, \fB\-links\fP, \fB\-size\fP, \fB\-uid\fP und \fB\-used\fP), als .IP \fI+n\fP für größer als \fIn\fP, .IP \fI\-n\fP für kleiner als \fIn\fP, .IP \fIn\fP für genau \fIn\fP . .P Unterstützte Tests: .IP "\-amin \fIn\fP," Auf die Datei wurde zuletzt vor weniger als, mehr als oder genau \fIn\fP Minuten zugegriffen. .IP "\-anewer \fIBezug\fP" Die Zeit des letzten Zugriffs auf die aktuelle Datei ist neuerer als die der letzten Veränderung der \fIBezug\fPsdatei. Falls \fIBezug\fP ein symbolischer Link ist und die Optionen \fB\-H\fP oder \fB\-L\fP in Kraft sind, wird immer die Zeit der letzten Datenveränderung der Datei benutzt, auf die er zeigt. .IP "\-atime \fIn\fP" Auf die Datei ist vor weniger als, mehr als oder genau \fIn\fP*24 Stunden zugegriffen worden. Wenn Find herausfindet, wieviele 24\-Stundenzeiträume es her ist, seit auf die Datei zugegriffen wurde, wird jeder Bruchteil ignoriert, so dass \fB\-atime\ +1\fP auf eine Datei passt, auf die zuletzt vor zwei Tagen zugegriffen wurde. .IP "\-cmin \fIn\fP" Der Status der Datei wurde vor weniger als, mehr als oder genau \fIn\fP Minuten geändert. .IP "\-cnewer \fIBezug\fP" Die Zeit der letzten Statusänderung der aktuellen Datei ist neuerer als die der letzten Datenveränderung der \fIBezug\fPsdatei. Falls \fIBezug\fP ein symbolischer Link ist und die Optionen \fB\-H\fP oder \fB\-L\fP in Kraft sind, wird immer die Zeit der letzten Datenveränderung der Datei benutzt, auf den er zeigt. .IP "\-ctime \fIn\fP" Der Dateistatus wurde zuletzt vor weniger als, mehr als oder genau \fIn\fP*24 Stunden geändert. Lesen Sie die Kommentare zu \fB\-atime\fP, um zu verstehen, wie Rundung die Interpretation der Dateistatus\-Änderungszeiten beeinflusst. .IP \-empty Die Datei ist leer und entweder eine reguläre Datei oder ein Verzeichnis. .IP \-executable passt auf ausführbare Dateien und durchsuchbare Verzeichnisse (im Sinn der Namensauflösung) des aktuellen Benutzers. Dies berücksichtigt Zugriffssteuerungslisten (Access Control Lists) und andere Artefakte von Benutzerrechten, die der Test \fB\-perm\fP ignoriert. Dieser Test macht Gebrauch vom Systemaufruf \fBaccess\fP(2) und kann daher durch NFS\-Server getäuscht werden, die Abbildung der UID (oder Root\-Squashing) nutzen, da viele Systeme \fBaccess\fP(2) im Kernel des Clients implementieren und daher von den Abbildungsinformationen der UID keinen Gebrauch machen können, die auf dem Server gehalten werden. Da dieser Test nur auf dem Ergebnis des Systemaufrufs \fBaccess\fP(2) basiert, gibt es keine Gewährleistung, dass eine Datei, bei der dieser Test erfolgreich war, tatsächlich ausgeführt werden kann. .IP \-false Immer falsch .IP "\-fstype \fITyp\fP" Die Datei liegt auf einem Dateisystem des Typs \fITyp\fP. Die gültigen Dateisystemtypen variieren zwischen verschiedenen Versionen von Unix; eine unvollständige Liste der Dateisystemtypen, die auf einigen Versionen von Unix und anderen akzeptiert werden ist Folgende: ufs, 4.2, 4.3, nfs,tmp, mfs, S51K und S52K. Sie können \fB\-printf\fP mit der Option %F benutzen, um die Typen Ihrer Dateisysteme zu sehen. .IP "\-gid \fIn\fP" Die numerische Gruppenkennung der Datei ist kleiner als, größer als oder genau \fIn\fP. .IP "\-group \fIgname\fP" Datei gehört der Gruppe \fIGruppenname\fP (numerische Gruppenkennungen erlaubt). .IP "\-ilname \fIMuster\fP" wie \fB\-lname\fP, aber der Treffer berücksichtigt keine Groß\-/Kleinschreibung. Falls die Option \fB\-follow\fP in Kraft ist, gibt dieser Test falsch zurück, außer wenn der symbolische Link kaputt ist. .IP "\-iname \fIMuster\fP" Funktioniert genauso wie \fB\-name\fP ohne jedoch Groß\- und Kleinschreibung zu berücksichtigen. Zum Beispiel werden die Muster »fo*« und »F??« beide die Dateien »Foo«, »FOO«, »foo«, »fOo« usw. finden. Das Muster \fB*bar\fP wird auch Dateien wie ».foobar« finden. .IP "\-inum \fIn\fP" Die Inode\-Nummer der Datei ist kleiner als, größer als oder genau \fIn\fP. Es ist normalerweise einfacher, stattdessen den Test \fB\-samefile\fP zu benutzen. .IP "\-ipath \fIMuster\fP" wie \fB\-path\fP, aber der Treffer berücksichtigt keine Groß\-/Kleinschreibung .IP "\-iregex \fIMuster\fP" wie \fB\-regex\fP, aber der Treffer berücksichtigt keine Groß\-/Kleinschreibung .IP "\-iwholename \fIMuster\fP" Siehe \fB\-ipath\fP. Diese Alternative ist nicht so portierbar wie \fB\-path\fP. .IP "\-links \fIn\fP" Datei hat weniger als, mehr als oder genau \fIn\fP harte Links. .IP "\-lname \fIMuster\fP" Datei ist ein symbolischer Link, dessen Inhalt zum Shell\-Muster \fIMuster\fP passt. Insbesondere behandeln die Metazeichen nicht »/« oder ».\&«. Falls die Optionen \fB\-L\fP oder \fB\-follow\fP in Kraft sind, gibt dieser Test falsch zurück, außer wenn der symbolische Link kaputt ist. .IP "\-mmin \fIn\fP" Daten der Datei wurden zuletzt vor weniger als, mehr als oder genau \fIn\fP Minuten verändert. .IP "\-mtime \fIn\fP" Daten der Datei wurden zuletzt vor weniger als, mehr als oder genau \fIn\fP*24 Stunden verändert. Lesen Sie die Kommentare zu \fB\-atime\fP, um zu verstehen, wie Rundung die Interpretation der Dateiänderungszeiten beeinflusst. .IP "\-name \fIMuster\fP" Der Dateiname ohne führende Verzeichnisse (basename) passt zum Shell\-Muster \fIMuster\fP. Da die führenden Verzeichnisse entfernt sind, enthalten die für die Übereinstimmungsfindung mit \fB\-name\fP berücksichtigten Dateinamen niemals einen Schrägstrich, daher wird »\-name a/b« niemals einen Treffer ergeben. Wahrscheinlich werden Sie stattdessen \fB\-path\fP benutzen müssen. Eine Warnung wird ausgegeben, wenn Sie dies zu tun versuchen, es sei denn, die Umgebungsvariable POSIXLY_CORRECT ist gesetzt. Die Metazeichen (»*«, »?« und »[]«) entsprechen einem ».\&« am Anfang des Basisnamens (dies ist eine Änderung in findutils\-4.2.2; siehe Abschnitt STANDARDKONFORMITÄT unten). Um ein Verzeichnis und die Dateien darin zu ignorieren, benutzen Sie \fB\-prune\fP statt jede Datei in dem Baum zu überprüfen; ein Beispiel finden Sie in der Beschreibung dieser Aktion. Klammern werden nicht als etwas Besonderes erkannt, trotz der Tatsache, dass einige Shells einschließlich der Bash Klammern eine besondere Bedeutung innerhalb von Shell\-Mustern beimessen. Der Dateinamensabgleich wird unter Benutzung der Bibliotheksfunktion \fBfnmatch\fP(3) durchgeführt. Vergessen Sie nicht, das Muster in Anführungszeichen zu setzen, um es vor Expandierung durch die Shell zu schützen. .IP "\-newer \fIBezug\fP" Die Zeit der letzten Datenveränderung der aktuellen Datei ist neuerer als die der letzten Datenveränderung der \fIBezug\fPsdatei. Falls \fIBezug\fP ein symbolischer Link ist und die Optionen \fB\-H\fP oder \fB\-L\fP in Kraft sind, wird immer die Zeit der letzten Datenveränderung der Datei benutzt, auf den er verweist. .IP "\-newerXY \fIBezug\fP" Dies ist erfolgreich, wenn der Zeitstempel \fIX\fP der Datei als neuer als der der Datei \fIY\fP der Datei \fIBezug\fP erkannt wird. Die Zeichen \fIX\fP und \fIY\fP sind aus folgenden Buchstaben frei wählbar: .TS ll ll ll ll llw(2i). a Die Zugriffszeit der Datei \fIBezug\fP B Die Erstellungszeit der Datei \fIBezug\fP c Die Inode\-Statusänderungszeit von \fIBezug\fP m Die Änderungszeit der Datei \fIBezug\fP t \fIBezug\fP wird direkt als eine Zeit interpretiert .TE Einige Kombinationen sind ungültig. So darf \fIX\fP bespielsweise nicht \fIt\fP sein. Einige Kombinationen sind nicht auf allen Systemen implementiert. \fIB\fP wird beispielsweise nicht von allen Systemen unterstützt. Falls eine ungültige oder nicht unterstützte Kombination von \fIXY\fP angegeben wurde, kommt es dadurch zu einem schwerwiegenden Fehler. Zeitangaben werden diesbezüglich wie das Argument zu der Option \fB\-d\fP von GNU\-\fBdate\fP interpretiert. Falls Sie versuchen die Erstellungszeit einer Bezugsdatei zu benutzen und die Erstellungszeit nicht bestimmt werden kann, kommt es dadurch zu einer Nachricht über einen schwerwiegenden Fehler. Falls Sie einen Test angeben, der sich auf die Erstellungszeit der Dateien bezieht, die untersucht werden, wird dieser Test für jene Dateien fehlschlagen, deren Erstellungszeit nicht bekannt ist. .IP \-nogroup Der numerische Gruppenkennung der Datei entspricht keiner Gruppe. .IP \-nouser Die numerische Benutzerkennung der Datei gehört zu keinem Benutzer. .IP "\-path \fIMuster\fP" Der Dateiname passt zum Shell\-Muster \fIMuster\fP. Die Metazeichen behandeln »/« oder ».\&« nicht besonders; daher wird zum Beispiel .in +4m .nf find . \-path "./sr*sc" .fi .in Gibt einen Eintrag für ein Verzeichnis namens \fI./src/misc\fP (falls es existiert) aus. Um ein gesamtes Verzeichnis zu ignorieren, benutzen Sie \fB\-prune\fP, statt jede Datei in dem Baum zu überprüfen. Beachten Sie, dass Mustervergleichstests auf den ganzen Dateinamen angewendet werden, beginnend von einem der auf der Befehlszeile benannten Startpunkte. Es würde nur Sinn ergeben, hier einen absoluten Pfadnamen zu benutzen, wenn der maßgebliche Startpunkt auch ein absoluter Pfad wäre. Dies bedeutet, dass dieser Befehl niemals auf etwas zutreffen wird: .br .in +4m .nf find bar \-path /foo/bar/myfile \-print .fi .in Find vergleicht das Argument \fB\-path\fP mit der Verkettung eines Verzeichnisnamens mit dem Basisnamen der Datei, die es untersucht. Da die Verkettung nie mit einem Schrägstrich endet, werden \fB\-path\fP\-Argumente mit einem solchen Schrägstrich am Ende nie als Treffer gewertet (außer wenn vielleicht ein Startpunkt in der Befehlszeile angegeben wird). \fB\-path\fP wird auch von \fBfind\fP in HP\-UX unterstützt und ist Teil des Standards POSIX 2008. .IP "\-perm \fIModus\fP" Die Zugriffsrechte der Datei entsprechen exakt dem \fIModus\fP (oktal oder symbolisch). Da exakte Übereinstimmung nötig ist, wenn Sie diese Form für symbolische Modi benutzen möchten, müssen Sie möglicherweise eine eher komplexe Moduszeichenkette angeben. \fB\-perm g=w\fP wird beispielsweise nur bei Dateien zutreffen, die den Modus 0020 haben (also einer, bei dem das Schreibrecht der Gruppe das einzige gesetzte Recht ist). Wahrscheinlicher ist, dass Sie die Formen »/« oder »\-« benutzen möchten, zum Beispiel \fB\-perm \-g=w\fP, was auf jede Datei mit Gruppenschreibrechten passt. Einige anschauliche Beispiele finden Sie im Abschnitt \fBBEISPIELE\fP. .IP "\-perm \-\fIModus\fP" Alle Rechte\-Bits \fIModus\fP sind für diese Datei gesetzt. Symbolische Modi werden in dieser Form akzeptiert. Dies ist üblicherweise die Art, auf die Sie sie benutzen möchten. Sie müssen »u«, »g« oder »o« angeben, falls Sie einen symbolischen Modus verwenden. Einige anschauliche Beispiele finden Sie im Abschnitt \fBBEISPIELE\fP. .IP "\-perm /\fIModus\fP" Einige der Rechte\-Bits \fIModus\fP sind für diese Datei gesetzt. Symbolische Modi werden in dieser Form akzeptiert. Sie müssen »u«, »g« oder »o« angeben, falls Sie einen symbolischen Modus verwenden. Einige anschauliche Beispiele finden Sie im Abschnitt \fBBEISPIELE\fP. Falls keine Rechte\-Bits in \fIModus\fP gesetzt sind, trifft dieser Test auf alle Dateien zu (die Idee, die dahinter steckt, ist das durchgängige Verhalten zu \fB\-perm\ \-000\fP). .IP "\-perm +\fIModus\fP" Dies wird nicht mehr unterstützt und wurde bereits 2005 als veraltet markiert. Verwenden Sie stattdessen \fB\-perm /\fP\fIModus\fP. .IP \-readable trifft auf durch den aktuellen Benutzer lesbare Dateien zu. Dies berücksichtigt Zugriffssteuerungslisten (ACLs) und andere Artefakte von Rechten, die der Test \fB\-perm\fP ignoriert. Dieser Test macht Gebrauch vom Systemaufruf \fBaccess\fP(2) und kann daher durch NFS\-Server getäuscht werden, die Abbildung der UID (oder Root\-Squashing) nutzen, da viele Systeme \fBaccess\fP(2) im Kernel des Clients implementieren und daher von den Abbildungsinformationen der UID keinen Gebrauch machen können, die auf dem Server gehalten werden. .IP "\-regex \fIMuster\fP" der Dateiname passt zu dem regulären Ausdruck \fIMuster\fP. Dies ist ein Treffer auf den gesamten Pfad, keine Suche. Um beispielsweise eine Datei mit dem Namen \fI./fubar3\fP zu finden, können Sie die regulären Ausdrücke ».*bar.\&« oder ».*b.*3« benutzen, aber nicht »f.*r3«. Die regulären Ausdrücke, die \fBfind\fP versteht, sind standardmäßig reguläre Ausdrücke von Emacs (außer dass ».« auf Zeilenumbruch passt), dies kann aber mit der Option \fB\-regextype\fP geändert werden. .IP "\-samefile \fIName\fP" Datei bezieht sich auf den gleichen Inode wie \fIName\fP. Wenn \fB\-L\fP in Kraft ist, kann dies symbolische Links umfassen. .IP "\-size \fIn\fP[cwbkMG]" Datei belegt weniger als, mehr als oder genau \fIn\fP Speichereinheiten (aufgerundet). Die folgenden Endungen können benutzt werden: .RS .IP »b« für 512\-Byte\-Blöcke (dies ist die Vorgabe, wenn keine Endung benutzt wird) .IP »c« für Byte .IP »w« für Wörter aus zwei Byte .IP »k« für Kibibyte (KiB, Einheiten aus 1024 Byte) .IP »M« für Mebibyte (MiB, Einheiten aus 1024 * 1024 = 1\|048\|576 Byte) .IP »G« für Gibibyte (GiB, Einheiten aus 1024 * 1024 * 1024 = 1\|073\|741\|824 Byte) .RE .IP Die Größe ist einfach das Mitglied »st_size« der Struktur stat, das von dem Systemaufruf lstat (oder stat) befüllt wird. Es wird wie oben beschrieben gerundet. Mit anderen Worten, es ist mit dem Ergebnis des Aufrufs von \fBls\ \-l\fP konsistent. Vergessen Sie nicht, dass die Formatkennzeichner »%k« und »%b« von \fB\-printf\fP Dateien mit Löchern unterschiedlich handhaben. Die Endung »b« bezeichnet stets 512\-Byte\-Blöcke und niemals 1024\-Byte\-Blöcke; dies unterscheidet sich vom Verhalten von \fB\-ls\fP. .IP Die Präfixe + und \- bezeichnen größer und kleiner als, wie üblich, d.h. eine exakte Größe von \fIn\fP Einheiten wird nicht passen. Denken Sie daran, dass die Größe auf die nächste Einheit aufgerundet wird. Daher ist \fB\-size \-1M\fP nicht äquivalent zu \fB\-size\ \-1\|048\|576c\fP. Ersteres passt nur auf leere Dateien, während Letzteres auf Dateien von 0 bis 1.048.575 byte passt. .IP \-true immer wahr .IP "\-type \fIc\fP" Datei ist vom Typ \fIc\fP;: .RS .IP b blockorientierte Spezialdatei (gepuffert) .IP c zeichenorientierte Spezialdatei (nicht gepuffert) .IP d Verzeichnis .IP p benannte Pipe (FIFO) .IP f reguläre Datei .IP l symbolischer Link; dies ist niemals wahr, falls die Optionen \fB\-L\fP oder \fB\-follow\fP in Kraft sind, außer wenn der symbolische Link kaputt ist. Falls Sie nach symbolischen Links suchen möchten, während \fB\-L\fP in Kraft ist, benutzen Sie \fB\-xtype\fP. .IP s Socket .IP D Door (Solaris) .RE .IP Um nach mehr als einem Typ auf einmal zu suchen, können Sie eine kombinierte Liste der Typbuchstaben, getrennt durch ein Komma »,«, angeben (GNU\-Erweiterung). .IP "\-uid \fIn\fP" Die numerische Benutzerkennung der Datei ist kleiner als, größer als oder genau \fIn\fP. .IP "\-used \fIn\fP" Auf die Datei ist vor weniger als, mehr als oder genau \fIn\fP Tagen nach ihrer letzten Statusänderung zugegriffen worden. .IP "\-user \fIBenutzername\fP" Die Datei gehört dem Anwender \fIBenutzername\fP (numerische Benutzerkennung erlaubt). .IP "\-wholename \fIMuster\fP" Siehe \fB\-path\fP. Diese Alternative ist nicht so portierbar wie \fB\-path\fP. .IP \-writable passt auf durch den aktuellen Benutzer schreibbare Dateien. Die berücksichtigt Zugriffssteuerungslisten (ACLs) und andere Artefakte von Rechten, die der Test \fB\-perm\fP ignoriert. Dieser Test macht Gebrauch vom Systemaufruf \fBaccess\fP(2) und kann daher durch NFS\-Server getäuscht werden, die Abbildung der UID (oder Root\-Squashing) nutzen, da viele Systeme \fBaccess\fP(2) im Kernel des Clients implementieren und daher von den Abbildungsinformationen der UID keinen Gebrauch machen können, die auf dem Server gehalten werden. .IP "\-xtype \fIc\fP" das Gleiche wie \fB\-type\fP, außer wenn die Datei ein symbolischer Link ist. Für symbolische Links gilt: Falls die Optionen \fB\-H\fP oder \fB\-P\fP angegeben wurden, ist dies wahr, wenn die Datei ein Link auf eine Datei des Typs \fIc\fP ist oder, falls die Option \fB\-L\fP angegeben wurde, wenn \fIc\fP »l« ist. Anders ausgedrückt, für symbolische Links prüft \fB\-xtype\fP den Typ der Datei, den \fB\-type\fP nicht prüft. .IP "\-context \fIMuster\fP" (Nur SELinux) Sicherheitskontexte der Datei, die dem \fIMuster\fP entspricht. .SS AKTIONEN .IP \-delete Dateien löschen; wahr, falls erfolgreich entfernt. Falls das Entfernen fehlschlägt, wird eine Fehlermeldung ausgegeben. Falls \fB\-delete\fP fehlschlägt, wird der Rückgabewert von \fBfind\fP ungleich null sein (wenn es letztendlich beendet wird). Das Benutzen von \fB\-delete\fP schaltet automatisch die Option \fB\-depth\fP ein. \fBWarnungen\fP: Vergessen Sie nicht, dass die Find\-Befehlszeile als ein Ausdruck ausgewertet wird. Daher wird das Voranstellen von \fB\-delete\fP dazu führen, dass \fBfind\fP versucht alles was Sie unterhalb des Startpunkts angegeben haben zu löschen. Wenn Sie eine \fBfind\fP\-Befehlszeile testen, die Sie später beabsichtigen mit \fB\-delete\fP zu nutzen, sollten Sie explizit \fB\-depth\fP angeben, um spätere Überraschungen zu vermeiden. Da \fB\-delete\fP \fB\-depth\fP impliziert, können Sie sinnvollerweise nicht \fB\-prune\fP und \fB\-delete\fP zusammen benutzen. Zusammen mit der Option \fB\-ignore_readdir_race\fP wird \fBfind\fP Fehler der Aktion \fB\-delete\fP ignorieren, falls die Datei verschwunden ist, seit das Elternverzeichnis gelesen wurde: es wird keine Fehlerdiagnosen ausgeben und der Rückkehr\-Code der Aktion \fB\-delete\fP wird wahr sein. .IP "\-exec \fIBefehl\fP ;" führt den \fIBefehl\fP aus; wahr, wenn Status 0 zurückgegeben wird. Alle folgenden Argumente von \fBfind\fP werden als Argumente des Befehls betrachtet, bis ein Argument gefunden wird, das »;« beinhaltet. Die Zeichenkette »{}« wird überall, wo sie in den Argumenten erscheint, durch den aktuell verarbeiteten Dateinamen ersetzt, nicht nur in Argumenten, in denen sie allein steht, wie in einigen Versionen von \fBfind\fP. Es könnte nötig sein, beide Konstruktionen zu maskieren (mit einem »\e«) oder in Anführungszeichen zu setzen, um sie vor einer Expansion durch die Shell zu schützen. Im Abschnitt \fBBEISPIELE\fP finden Sie Beispiele, wie Sie die Option \fB\-exec\fP benutzen. Der angegebene Befehl wird jeweils für jede gefundene Datei ausgeführt. Der Befehl wird im Startverzeichnis ausgeführt. Es gibt unvermeidliche Sicherheitsprobleme rings um den Gebrauch der Aktion \fB\-exec\fP; Sie sollten stattdessen die Option \fB\-execdir\fP verwenden. .IP "\-exec \fIBefehl\fP {} +" Diese Variante der Aktion \fB\-exec\fP führt den angegebenen Befehl für die ausgewählten Dateien aus, aber die Befehlszeile wird durch das Anhängen jeder ausgewählten Datei an das Ende gebildet; die Gesamtzahl der Befehlsaufrufe wird viel geringer sein, als die Anzahl passender Dateien. Die Befehlszeile wird auf die gleiche Weise wie bei \fBxargs\fP gebildet. Innerhalb des Befehls ist nur eine Instanz von »{}« erlaubt und sie muss am Ende direkt vor dem »+« erscheinen; sie muss (mit einem »\e«) maskiert oder in Anführungszeichen gesetzt werden, um die Interpretation durch die Shell zu verhindern. Der Befehl wird im Startverzeichnis ausgeführt. Falls irgendein Aufruf mit der »+«\-Form einen von Null verschiedenen Wert als Exit\-Status zurückliefert, dann liefert \fBfind\fP einen von Null verschiedenen Exit\-Status zurück. Wenn \fBfind\fP einen Fehler entdeckt, kann dies gelegentlich zu einem unmittelbaren Abbruch führen, so dass ausstehende Befehle überhaupt nicht mehr ausgeführt werden. Aus diesem Grund führt \fB\-exec\ \fP\fImein\-Befehl\fP\fB\ …\ {}\ +\ \-quit\fP nicht dazu, dass \fImein\-Befehl\fP tatsächlich ausgeführt wird. Diese Variante von \fB\-exec\fP gibt immer »wahr« zurück. .IP "\-execdir \fIBefehl\fP ;" .IP "\-execdir \fIBefehl\fP {} +" wie \fB\-exec\fP, aber der angegebene Befehl wird in dem Unterverzeichnis ausgeführt, das die passende Datei enthält, was normalerweise nicht das Verzeichnis ist, in dem Sie \fBfind\fP aufgerufen haben. So wie bei \-exec sollten die geschweiften Klammern {} auch hier in Anführungszeichen gesetzt werden, wenn find aus einer Shell heraus aufgerufen wird. Dies ist eine wesentlich sicherere Methode zum Aufruf von Befehlen, da sie Race Conditions während der Auflösung von Pfaden zu den passenden Dateien vermeidet. Wie bei der Aktion \fB\-exec\fP wird die Form »+« von \fB\-execdir\fP eine Befehlszeile bilden, um mehr als eine passende Datei zu verarbeiten, aber jeder angegebene Aufruf des \fBBefehl\fPs wird nur Dateien auflisten, die im gleichen Unterverzeichnis existieren. Falls Sie diese Option benutzen, müssen Sie sicherstellen, dass Ihre Umgebungsvariable \fB$PATH\fP nicht direkt auf ».« verweist; andernfalls könnte ein Angreifer Befehle seiner Wahl ausführen, indem er eine Datei mit geeignetem Namen in einem Verzeichnis hinterlässt, in dem Sie \fB\-execdir\fP ausführen werden. Das Gleiche gilt für die Einträge in \fB$PATH\fP, die leer oder keine absoluten Verzeichnisnamen sind. Falls irgendein Aufruf in der »+«\-Form einen von Null verschiedenen Wert als Exit\-Status zurückliefert, dann liefert \fBfind\fP einen von Null verschiedenen Exit\-Status zurück. Wenn \fBfind\fP einen Fehler entdeckt, kann dies gelegentlich zum unmittelbaren Abbruch führen, so dass ausstehende Befehle überhaupt nicht mehr ausgeführt werden. Das Ergebnis der Aktion hängt davon ab, welche der Varianten \fB+\fP oder the \fB;\fP benutzt wird. \fB\-execdir\ \fP\fIBefehl\fP\fB\ {}\ +\fP gibt immer »wahr« zurück, während \fB\-execdir\ \fP\fIBefehl\fP\fB\ {}\ ;\fP nur dann »wahr« ergibt, wenn der \fIBefehl\fP 0 zurückgibt. .IP "\-fls \fIDatei\fP" wahr; wie \fB\-ls\fP, schreibt aber wie \fB\-fprint\fP nach \fIDatei\fP. Die Ausgabedatei wird immer erstellt, sogar wenn das Prädikat niemals passte. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP "\-fprint \fIDatei\fP" wahr; gibt den vollständigen Dateinamen in \fIDatei\fP aus. Falls \fIDatei\fP nicht existiert, wird sie erzeugt; andernfalls wird sie gekürzt. Die Dateinamen \fI/dev/stdout\fP und \fI/dev/stderr\fP werden gesondert gehandhabt; sie beziehen sich auf die Standardausgabe beziehungsweise die Standardfehlerausgabe. Die Ausgabedatei wird immer erstellt, sogar wenn das Prädikat niemals passte. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP "\-fprint0 \fIDatei\fP" wahr; wie \fB\-print0\fP, schreibt aber wie \fB\-fprint\fP nach \fIDatei\fP. Die Ausgabedatei wird immer erstellt, sogar, wenn das Prädikat niemals passte. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP "\-fprintf \fIDatei\fP \fIFormat\fP" wahr; wie \fB\-printf\fP, schreibt aber wie \fB\-fprint\fP nach \fIDatei\fP. Die Ausgabedatei wird immer erstellt, sogar, wenn das Prädikat niemals passte. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP \-ls wahr; listet aktuelle Datei im Format \fBls \-dils\fP auf der Standardausgabe auf. Die Anzahl der Blöcke besteht aus 1\ kB\-Blöcken, außer wenn die Umgebungsvariable POSIXLY_CORRECT gesetzt ist, in der Blöcke zu 512 Byte benutzt werden. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP "\-ok \fIBefehl\fP ;" wie \fB\-exec\fP, vorher wird der Anwender aber um Bestätigung gebeten. Falls der Anwender zustimmt, wird der Befehl ausgeführt. Andernfalls wird nur falsch zurückgegeben. Wenn der Befehl ausgeführt wird, ist seine Standardeingabe umgeleitet von \fI/dev/null\fP. .IP Die Antwort auf die Abfrage wird mit einem Paar regulärer Ausdrücke verglichen, um zu bestimmen, ob es eine positive oder negative Antwort ist. Dieser reguläre Ausdruck stammt vom System, falls die Umgebungsvariable POSIXLY_CORRECT gesetzt ist, ansonsten von den Meldungsübersetzungen von \fBfind\fP. Falls das System keine geeignete Definition hat, wird die Definition von \fBfind\fP selbst benutzt. Auf jeden Fall wird die Interpretation des regulären Ausdrucks von den Umgebungsvariablen »LC_CTYPE« (Zeichenklassen) und »LC_COLLATE« (Zeichenbereiche und entsprechende Klassen) beeinträchtigt. .IP "\-okdir \fIBefehl\fP ;" wie \fB\-exec\fP, fragt den Anwender aber zuerst auf die gleiche Art wie für \fB\-ok\fP. Falls der Anwender nicht zustimmt, wird nur falsch zurückgegeben. Wenn der Befehl ausgeführt wird, ist seine Standardeingabe umgeleitet von \fI/dev/null\fP. .IP \-print wahr; gibt den vollständigen Dateinamen gefolgt von einem Zeilenvorschub auf der Standardausgabe aus. Falls Sie die Ausgabe von \fBfind\fP in ein anderes Programm per Pipe weiterleiten und dort auch nur die geringste Möglichkeit besteht, dass die Dateien, die Sie suchen, einen Zeilenvorschub enthalten, sollten Sie ernsthaft in Betracht ziehen, statt \fB\-print\fP \fB\-print0\fP zu verwenden. Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .IP \-print0 wahr; gibt den vollständigen Dateinamen gefolgt von einem Null\-Zeichen (anstelle des Zeilenvorschubs, den \fB\-print\fP benutzt) aus. Dies ermöglicht, dass Dateinamen, die Zeilenvorschübe oder andere Typen von Leerräumen enthalten, korrekt durch Programme interpretiert werden, die die Ausgabe von \fBfind\fP verarbeiten. Diese Option entspricht der Option \fB\-0\fP von \fBxargs\fP. .IP "\-printf \fIFormat\fP" wahr; gibt \fIFormat\fP auf der Standardausgabe aus und interpretiert dabei »\e«\- und »%«\-Anweisungen. Feldbreiten und Genauigkeiten können wie bei der C\-Funktion \fBprintf\fP(3) angegeben werden. Bitte beachten Sie, dass viele Felder mit %s statt mit %d ausgegeben werden. Dies kann bedeuten, dass der Schalter nicht wie erwartet funktioniert. Dies bedeutet auch, dass die Option »\-« nicht funktioniert (er erzwingt, dass Felder linksbündig ausgerichtet werden). Anders als \fB\-print\fP fügt \fB\-printf\fP keinen Zeilenvorschub an das Ende der Zeichenkette. Die Anweisungen sind: .RS .IP \ea Alarmton .IP \eb Rückschritt .IP \ec Ausgabe gemäß dieser Formatbeschreibung sofort stoppen und die Ausgabe leeren .IP \ef Seitenvorschub .IP \en Zeilenumbruch .IP \er Wagenrücklauf .IP \et horizontaler Tabulator .IP \ev vertikaler Tabulator .IP \e0 ASCII\-Nullbyte .IP \e\e der Rückwärtsschrägstrich selbst (»\e«) .IP \eNNN das Zeichen, dessen ASCII\-Code NNN ist (oktal) .PP Ein »\e«\-Zeichen gefolgt von einem anderen Zeichen wird als ein gewöhnliches Zeichen betrachtet, daher werden beide ausgegeben. .IP %% das Prozentzeichen selbst .IP %a die Zeit des letzten Zugriffs auf die Datei, zurückgegeben im Format der C\-Funktion \fBctime\fP(3). .IP %A\fIk\fP die Zeit des letzten Zugriffs auf die Datei, angegeben durch \fIk\fP. Das ist entweder »@« oder eine Anweisung für die C\-Funktion \fBstrftime\fP(3). Einige der möglichen Werte für \fIk\fP sind nachfolgend aufgeführt; eine vollständige Liste finden Sie in der Dokumentation zu \fBstrftime\fP(3). Einige davon sind möglicherweise aufgrund von systembedingten Unterschieden in der Bibliotheksfunktion \fBstrftime\fP(3) nicht auf allen Systemen verfügbar. .RS .IP @ Sekunden seit dem 1.1.1970, 00:00 Uhr GMT mit Bruchteil .PP Zeitfelder: .IP H Stunde (00..23) .IP I Stunde (01..12) .IP k Stunde ( 0..23) .IP l Stunde ( 1..12) .IP M Minute (00..59) .IP p PM oder AM der Locale .IP r Zeit, 12 Stunden (hh:mm:ss: AM/PM) .IP S Sekunden (00.00 bis 61.00). Es gibt Nachkommastellen. .IP T Zeit, 24 Stunden (hh:mm:ss.xxxxxxxxxx) .IP + Datum und Zeit, getrennt durch »+«, zum Beispiel »2004\-04\-28+22:22:05.0«. Dies ist eine GNU\-Erweiterung. Die Zeit wird in der aktuellen Zeitzone angegeben (die durch das Setzen der Umgebungsvariable TZ beeinflusst sein könnte). Das Sekundenfeld beinhaltet einen Bruchteil. .IP X Zeitdarstellung der Locale (H:M:S). Das Sekundenfeld enthält einen Bruchanteil. .IP Z Zeitzone (z.B. EDT) oder nichts, falls keine Zeitzone bestimmt werden kann .PP Datumsfelder: .IP a abgekürzter Wochentag der Locale (So bis Sa) .IP A voller Wochentag der Locale, variable Länge (Sonntag bis Samstag) .IP b abgekürzter Monatsname der Locale (Jan bis Dez) .IP B voller Monatsname der Locale in variabler Länge (Januar bis Dezember) .IP c Datum und Zeit der Locale (Sa 4. Nov 12:02:33 EST 1989). Das Format entspricht dem von \fBctime\fP(3) und wahrt daher die Kompatibilität mit diesem Format. Es gibt dort keine Nachkommastellen im Sekundenfeld. .IP d Tag des Monats (01 bis 31) .IP D Datum (mm/dd/yy) .IP F Datum (yyyy\-mm\-dd) .IP h das Gleiche wie b .IP j Tag des Jahres (001..366) .IP m Monat (01..12) .IP U Nummer der Woche im Jahr mit Sonntag als erstem Tag der Woche (00 bis 53) .IP w Tag der Woche (0 bis 6) .IP W Nummer der Woche im Jahr mit Montag als erstem Tag der Woche (00 bis 53) .IP x Datumsdarstellung der Locale (mm/dd/yy) .IP y Die letzten zwei Ziffern des Jahres (00..99) .IP Y Jahr (1970 …\&) .RE .IP %b der für diese Datei benutzte Plattenplatz in 512\-Byte\-Blöcken. Da Plattenplatz als Vielfaches der Blockgröße des Dateisystems reserviert wird, ist dieser üblicherweise größer als %s/512, er kann aber auch kleiner sein, wenn die Datei eine Datei mit Löchern (Sparse\-Datei) ist. .IP %c das Datum, an dem zum letzten Mal der Status der Datei geändert wurde, im Format der C\-Funktion \fBctime\fP(3). .IP %C\fIk\fP das Datum, an dem zum letzten Mal der Status der Datei geändert wurde, in dem durch \fIk\fP angegebenen Format, was das Gleiche ist, wie für %A. .IP %d die Tiefe der Datei im Verzeichnisbaum; Null bedeutet, dass die Datei ein Befehlszeilenargument ist. .IP %D die Gerätenummer des Geräts auf der die Datei existiert (das Feld »st_dev« der Stuktur »stat«) als Dezimalzahl .IP %f Gibt den Basisnamen aus. Dies ist der Dateiname ohne vorangestellte Verzeichnisnamen (also nur das letzte Element). Für \fB/\fP ergibt sich \fB/\fP. Ein Beispiel finden Sie im Abschnitt \fBBEISPIELE\fP. .IP %F Typ des Dateisystems, auf dem die Datei liegt; dieser Wert kann für \-fstype benutzt werden. .IP %g der Name der Gruppe der Datei oder die numerische Gruppenkennung, wenn die Gruppe keinen Namen hat .IP %G die numerische Gruppenkennung der Datei .IP %h Der Verzeichnisname; die voranstehenden Verzeichnisse des Dateinamens (alles außer dem letzten Element). Falls der Dateiname keine Schrägstriche enthält (da er im aktuellen Verzeichnis ist), wird der Kennzeichner %h zu ».« expandiert. Für Dateien, die selbst Verzeichnisse sind und einen Schrägstrich enthalten (\fB/\fP), wird %h zu einer leeren Zeichenkette expandiert. Ein Beispiel finden Sie im Abschnitt \fBBEISPIELE\fP. .IP %H der Startpunkt, unter dem die Datei gefunden wurde .IP %i die Inode\-Nummer der Datei (dezimal) .IP %k der für diese Datei benutzte Plattenplatz in 1\ kB\-Blöcken. Da Plattenplatz als Vielfaches der Blockgröße des Dateisystems reserviert wird, ist dieser üblicherweise größer als %s/1024, er kann aber auch kleiner sein, wenn die Datei eine Datei mit Löchern (Sparse\-Datei) ist. .IP %l Ziel des symbolischen Links (leere Zeichenkette, falls die Datei kein symbolischer Link ist .IP %m die Zugriffsrechte\-Bits der Datei (oktal). Diese Option benutzt die »traditionellen« Nummern, die die meisten Unix\-Implementierungen benutzen, falls aber Ihre Implementierung eine unübliche Sortierung der oktalen Zugriffsrechte benutzt, werden Sie einen Unterschied zwischen dem tatsächlichen Wert des Datei\-Modus und der Ausgabe von %m sehen. Normalerweise möchten Sie eine führende Null vor dieser Zahl haben. Um dies zu erreichen sollten Sie die Markierung \fB#\fP benutzen (wie beispielsweise in »%#m«). .IP %M die Zugriffsrechte der Datei (in symbolischer Form, wie für \fBls\fP). Diese Anweisung wird von Findutils seit einschließlich Version 4.2.5 unterstützt. .IP %n Anzahl harter Links auf die Datei .IP %p Name der Datei .IP %P Name der Datei; ohne den Namen des Startpunkts, unter dem sie gefunden wurde. .IP %s die Größe der Datei in Byte .IP %S Dichte der Datei. Diese wird berechnet als (BLOCKGRÖßE*st_blocks / st_size). Der genaue Wert, den Sie für eine normale Datei einer bestimmten Länge erhalten ist vom System abhängig. Normale Dateien mit Löchern (Sparse\-Dateien) werden einen Wert kleiner als 1.0 aufweisen und Dateien, die indirekte Blöcke verwenden können, einen Wert größer als 1.0 haben. Im allgemeinen ist die von einer Datei verwandte Anzahl an Blöcken dateisystemabhängig. Der Wert, der für BLOCKGRÖßE verwendet wird, ist vom System abhängig, beträgt aber normalerweise 512 Byte. Falls die Dateigröße null ist, ist der ausgegebene Wert undefiniert. Auf Systemen, auf denen die Unterstützung für st_blocks fehlt, wird als Dichte einer Datei 1.0. angenommen. .IP %t Zeit der letzten Änderung der Datei in dem von der C\-Funktion \fBctime\fP(3) zurückgegebenen Format .IP %T\fIk\fP Zeit der letzten Änderung der Datei in dem durch \fIk\fP angegebenen Format, wie bei %A .IP %u Name des Benutzers der Datei oder numerische Benutzerkennung, falls der Benutzer keinen Namen hat. .IP %U numerische Benutzerkennung der Datei. .IP %y Typ der Datei (wie in \fBls \-l\fP), U=unbekannter Typ (sollte nicht auftreten) .IP %Y Typ der Datei (wie %y), folgt aber symbolischen Links: »L«=Schleife, »N«=nicht existent, »?« für jeden anderen Fehler beim Bestimmen des Typs des Symlink\-Ziels. .IP %Z (nur SELinux) Sicherheitskontext der Datei. .IP "%{ %[ %(" Für zukünftige Verwendung reserviert. .PP Ein »%«\-Zeichen gefolgt von einem anderen Zeichen wird verworfen, aber das andere Zeichen wird ausgegeben (verlassen Sie sich nicht darauf, da weitere Formatzeichen eingeleitet werden könnten). Ein »%« am Ende des Formatarguments verursacht unvorhersehbares Verhalten, da es dort kein nachfolgendes Zeichen gibt. In einigen Locales könnte es Ihre Haustürschlüssel verstecken, während es in anderen Ihre letzte Seite des Romans, den Sie lesen, entfernt. Die Anweisungen %m und %d unterstützen die Schalter \fB#\fP, \fB0\fP und \fB+\fP, die anderen Anweisungen jedoch nicht, selbst wenn Nummern ausgegeben werden. Numerische Anweisungen, die diese Schalter nicht unterstützen, beinhalten \fBG\fP, \fBU\fP, \fBb\fP, \fBD\fP, \fBk\fP und \fBn\fP. Der Formatschalter »\-« wird unterstützt und ändert die Ausrichtung eines Feldes von rechtsbündig (was vorgegeben ist) auf linksbündig. .PP Lesen Sie den Abschnitt \fBUNÜBLICHE DATEINAMEN\fP, um zu erfahren, wie unübliche Dateinamen gehandhabt werden. .RE .IP \-prune Wahr; falls die Datei ein Verzeichnis ist, wird nicht hinein abgestiegen. Falls \fB\-depth\fP angegeben ist, dann hat \fB\-prune\fP keine Wirkung. Da \fB\-delete\fP \fB\-depth\fP impliziert, können Sie \fB\-prune\fP und \fB\-delete\fP nicht sinnvoll zusammen benutzen. Um beispielsweise das Verzeichnis \fIsrc/emacs\fP und alle Dateien und Verzeichnisse darunter zu überspringen und die Namen der anderen gefundenen Dateien auszugeben, machen Sie etwas wie Folgendes: .in +4m .nf find . \-path ./src/emacs \-prune \-o \-print .fi .in .IP \-quit Beendet sofort (mit einem Rückgabewert von 0, falls keine Fehler aufgetreten sind). Dies unterscheidet sich von \fB\-prune\fP, da \fB\-prune\fP lediglich auf die Inhalte der ignorierten Verzeichnisse angewendet wird, während \fB\-quit\fP einfach nur \fBfind\fP sofort beendet. Es bleiben keine laufenden Kindprozesse übrig. Alle mit \fB\-exec\ …\ +\fP or \fB\-execdir\ …\ +\fP erstellten Befehle, die aufgerufen wurden, werden beendet. Nach der Ausführung von \fB\-quit\fP werden keine weiteren in der Befehlszeile angegebenen Befehle verarbeitet. Beispielsweise gibt »\fBfind\ \fP\fI/tmp/foo\fP\fB\ \fP\fI/tmp/bar\fP\fB\ \-print\ \-quit\fP« nur »/tmp/foo« aus. .br Ein häufiger Anwendungsfall für \fB\-quit\fP ist, das Durchsuchen des Dateisystems zu beenden, sobald das Gewünschte gefunden wurde. Falls beispielsweise nur eine einzelne Datei gefunden werden soll, können Sie Folgendes tun: .in +4m .nf find / \-name Nadel \-print \-quit .fi .in .SS OPERATOREN aufgelistet in der Reihenfolge abnehmender Wertigkeit: .IP "( \fIexpr\fP )" Wertigkeit erzwingen. Da Klammern für die Shell etwas spezielles sind, werden Sie sie normalerweise maskieren müssen. Viele Beispiele in dieser Handbuchseite verwenden zu diesem Zweck; »\e( … \e) anstelle von »( … )«. .IP "! \fIAusdruck\fP" wahr, wenn der \fIAusdruck\fP falsch ist. Es wird normalerweise auch nötig sein, dieses Zeichen vor einer Interpretation durch die Shell zu schützen. .IP "\-not \fIAusdruck\fP" das Gleiche wie !\& \fIAusdruck\fP, ist aber nicht POSIX\-konform .IP "\fIAusdruck1 Ausdruck2\fP" Zwei Ausdrücke in einer Reihe werden mit einem impliziten \fB\-a\fP verbunden; \fIAusdruck2\fP wird nicht ausgewertet, wenn \fIAusdruck1\fP falsch ist. .IP "\fIAusdruck1\fP \-a \fIAusdruck2\fP" entspricht \fIAusdruck1 Ausdruck2\fP .IP "\fIAusdruck1\fP \-and \fIAusdruck2\fP" entspricht \fIAusdruck1 Ausdruck2\fP, ist aber POSIX\-konform .IP "\fIAusdruck1\fP \-o \fIAusdruck2\fP" oder; \fIAusdruck2\fP wird nicht ausgewertet, falls \fIAusdruck1\fP wahr ist .IP "\fIAusdruck1\fP \-or \fIAusdruck2\fP" entspricht \fIAusdruck1\fP \fB\-o\fP \fIAusdruck2\fP, ist aber nicht POSIX\-konform .IP "\fIAusdruck1\fP, \fIAusdruck2\fP" Liste; sowohl \fIAusdruck1\fP als auch \fIAusdruck2\fP werden immer ausgewertet. Der Wert von \fIAusdruck1\fP wird verworfen; der Wert der Liste ist der Wert von \fIAusdruck2\fP. Der Kommaoperator kann nützlich sein, um nach unterschiedlichen Kriterien zu suchen, die Dateisystemhierarchie aber nur einmal zu durchlaufen. Die Aktion \fB\-fprintf\fP kann benutzt werden, um die verschiedenen gefundenen Elemente in mehreren verschiedenen Ausgabedateien aufzulisten. .P Bitte beachten Sie, das \fB\-a\fP, wenn es implizit (zum Beispiel, wenn zwei Tests ohne einen expliziten Operator zwischen ihnen auftauchen) oder explizit angegeben wird, Vorrang vor \fB\-o\fP hat. Das bedeutet, dass \fBfind \&. \-name afile \-o \-name bfile \-print\fP niemals \fIafile\fP ausgibt. . .SH "UNÜBLICHE DATEINAMEN" Viele der Aktionen von \fBfind\fP resultieren in der Ausgabe von Daten, die unter der Kontrolle anderer Benutzer stehen. Dies umfasst Dateinamen, Größen, Änderungszeiten und so weiter. Dateinamen stellen ein potentielles Problem dar, da sie jedes Zeichen mit Ausnahme von »\e0« und »/« enthalten können. Unübliche Zeichen in Dateinamen können unerwartete und oft unerwünschte Dinge mit Ihrem Terminal tun (beispielsweise die Einstellungen Ihrer Funktionstasten auf einigen Terminals ändern). Unübliche Zeichen werden von verschiedenen Aktionen unterschiedlich gehandhabt, wie im Folgenden beschrieben. .IP "\-print0, \-fprint0" immer den genauen Dateinamen unverändert ausgeben, sogar wenn die Ausgabe an ein Terminal geht. .IP "\-ls, \-fls" Unübliche Zeichen werden maskiert. Leerzeichen, Rückwärtsschrägstrich und doppelte Anführungszeichen werden unter Benutzung von Maskierung im C\-Stil ausgegeben (zum Beispiel »\ef«, »\e«). Andere unübliche Zeichen werden unter Benutzung von einer oktalen Maskierung ausgegeben. Andere druckbare Zeichen (für \fB\-ls\fP und \fB\-fls\fP sind das die Zeichen zwischen oktal 041 und 0176) werden unverändert ausgegeben. .IP "\-printf, \-fprintf" Falls die Ausgabe nicht an ein Terminal geht, wird sie unverändert gedruckt. Andernfalls hängt das Ergebnis davon ab, welche Anweisung benutzt wird. Die Anweisungen %D, %F, %g, %G, %H, %Y und %y expandieren die Werte, die nicht unter der Kontrolle des Dateibesitzers stehen und werden daher in der vorliegenden Form gedruckt. Die Anweisungen %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u und %U haben Werte, die unter der Kontrolle des Dateibesitzers der Datei stehen, die aber nicht benutzt werden können, um beliebige Daten an das Terminal zu senden und daher unverändert gedruckt werden. Die Anweisungen %f, %h, %l, %p und %P werden maskiert. Diese Maskierung wird auf die gleiche Art durchgeführt wie für GNU\-\fBls\fP. Dies ist nicht der gleiche Maskierungsmechanismus wie der, der für \fB\-ls\fP und \fB\-fls\fP benutzt wird. Falls Sie die Wahl haben, welches Format für die Ausgabe benutzt werden soll, ist es normalerweise besser »\e0« als Endezeichen statt eines Zeilenvorschubs zu verwenden, da Dateinamen Leerzeichen und Zeilenvorschübe enthalten können. Die Einstellung der Umgebungsvariablen »LC_CTYPE« wird benutzt, um zu bestimmen, welche Zeichen maskiert werden müssen. .IP "\-print, \-fprint" Maskierung wird auf die gleiche Weise wie für \fB\-printf\fP und \fB\-fprintf\fP gehandhabt. Falls Sie \fBfind\fP in einem Skript benutzen oder in einer Situation sind, in der die gefundenen Dateien beliebige Namen haben können, sollten Sie in Betracht ziehen \fB\-print0\fP anstelle von \fB\-print\fP benutzen. .P Die Aktionen \fB\-ok\fP und \fB\-okdir\fP geben den aktuellen Dateinamen unverändert aus. Dies könnte sich in einem späteren Release ändern. . .SH STANDARDKONFORMITÄT Für größtmögliche Konformität zum POSIX\-Standard, sollten Sie die Umgebungsvariable POSIXLY_CORRECT setzen. Die folgenden Optionen sind im POSIX\-Standard (IEEE Std 1003.1\-2008, 2016 Edition) spezifiziert: .IP \fB\-H\fP Diese Option wird unterstützt. .IP \fB\-L\fP Diese Option wird unterstützt. .IP \fB\-name\fP Diese Option wird unterstützt, aber die POSIX\-Konformität hängt von der POSIX\-Konformität der Bibliotheksfunktion \fBfnmatch\fP(3) des SYstems ab. Ab findutils\-4.2.2 werden Shell\-Metazeichen (zum Beispiel »*«, »?« oder »[]«) zu einem führenden ».« passen, da dies die IEEE\-PASC\-Interpretation 126 erfordert. Dies ist eine Änderung gegenüber vorherigen Versionen der Findutils. .IP \fB\-type\fP unterstützt. POSIX spezifiziert »b«, »c«, »d«, »l«, »p«, »f« und »s«. GNU\-Find unterstützt außerdem »D«, das eine Door (Spezialdatei für Prozesskommunikation) repräsentiert, wo diese vom Betriebsystem bereitgestellt wird. Desweiteren erlaubt GNU find die Angabe mehrfacher Typen auf einmal in einer Kommata\-getrennten Liste. .IP \fB\-ok\fP unterstützt. Die Interpretation der Antwort entspricht den »ja«\- und »nein«\-Mustern, die durch Setzen der Umgebungsvariablen »LC_MESSAGES« ausgewählt wurde. Wenn die Umgebungsvariable »POSIXLY_CORRECT« gesetzt ist, werden diese Muster als die Systemdefinition einer postiven (ja) oder negativen (nein) Anwort betrachtet. Lesen Sie die Dokumentation des Systems für \fBnl_langinfo\fP(3), insbesondere YESEXPR und NOEXPR. Wenn »POSIXLY_CORRECT« nicht gesetzt ist, werden die Muster von \fBfind\fPs eigenem Meldungskatalog genommen. .IP \fB\-newer\fP unterstützt. Falls die angegebene Datei ein symbolischer Link ist, wird er immer zurückverfolgt. Dies ist eine Änderung gegenüber dem bisherigen Verhalten, das benutzt wurde, um die maßgebliche Zeit vom symbolischen Link zu nehmen; siehe den Abschnitt GESCHICHTE unterhalb. .IP \fB\-perm\fP unterstützt. Falls die Umgebungsvariable »POSIXLY_CORRECT« nicht gesetzt ist, werden einige Modusargumente (zum Beispiel +a+x), die in POSIX nicht gültig sind unterstützt, um abwärtskompatibel zu sein. .IP "Andere Primärausdrücke" Die Primärausdrücke \fB\-atime\fP, \fB\-ctime\fP, \fB\-depth\fP, \fB\-exec\fP, \fB\-group\fP, \fB\-links\fP, \fB\-mtime\fP, \fB\-nogroup\fP, \fB\-nouser\fP, \fB\-ok\fP, \fB\-path\fP, \fB\-print\fP, \fB\-prune\fP, \fB\-size\fP, \fB\-user\fP und \fB\-xdev\fP werden alle unterstützt. .P Der POSIX\-Standard spezifiziert Klammern »(«, »)«, Verneinung »!« und die Operatoren »AND« und »OR« (\fB\-a\fP und \fB\-o\fP). .P Alle anderen Operationen, Prädikate, Ausdrücke und so weiter sind Erweiterungen jenseits des POSIX\-Standards. Viele dieser Erweiterungen sind jedoch nicht auf GNU\-Find beschränkt. .P Der POSIX\-Standard erfordert, dass \fBfind\fP Schleifen entdeckt: .IP Das Hilfswerkzeug \fBfind\fP muss unendliche Schleifen entdecken, also das Eintreten in ein bereits vorher besuchtes Verzeichns, das ein Vorgänger der zuletzt gefundenen Datei ist. Wenn es eine Endlosschleife entdeckt, soll Find eine Diagnosenachricht auf die Standardfehlerausgabe schreiben und entweder seine Position in der Hierarchie wiederherstellen oder sich beenden. .P GNU\-\fBfind\fP erfüllt diese Anforderungen. Die Link\-Anzahl von Verzeichnissen, die Einträge mit harten Links auf einen Vorgänger enthalten, werden oft kleiner sein, als sie andernfalls sein sollten. Dies kann bedeuten, dass GNU\-Find manchmal den Besuch eines Unterverzeichnisses wegoptimiert, das tatsächlich ein Link zu einem Vorgänger ist. Da \fBfind\fP nicht tatsächlich in ein solches Unterverzeichnis eintritt, ist es erlaubt, das Ausgeben einer Diagnosenachricht zu verhindern. Dieses Verhalten könnte jedoch ein wenig verwirrend sein. Es ist unwahrscheinlich, dass sich tatsächlich jemand auf dieses Verhalten verlässt. Falls die Leaf\-Optimierung mit \fB\-noleaf\fP ausgeschaltet wurde, wird der Verzeichniseintrag immer untersucht und die Diagnosenachricht wird an geeigneter Stelle ausgegeben. Symbolische Links können nicht benutzt werden, um Dateisystemzyklen im eigentlichen Sinn zu erzeugen, aber falls die Optionen \fB\-L\fP oder \fB\-follow\fP benutzt werden, wird eine Diagnosenachricht ausgegeben, wenn \fBfind\fP in symbolischen Links auf eine Schleife trifft. Wie bei harten Links, die Schleifen enthalten, wird die Leaf\-Optimierung oft bedeuten, dass \fBfind\fP weiß, dass es \fIstat()\fP oder \fIchdir()\fP bei einem symbolischen Link nicht aufrufen muss, daher ist diese Diagnose häufig nicht nötig. .P Die Option \fB\-d\fP wird unterstützt, um die Kompatibilität mit verschiedenen BSD\-Systemen zu wahren, Sie sollten aber stattdessen die POSIX\-konforme Option \fB\-depth\fP benutzen. .P Die Umgebungsvariable POSIXLY_CORRECT beeinflusst nicht das Verhalten der Tests \fB\-regex\fP oder \fB\-iregex\fP, da diese Tests nicht im POSIX\-Standard spezifiziert sind. . .SH UMGEBUNGSVARIABLEN .IP LANG Stellt einen Vorgabewert für die Internationalisierungsvariablen bereit, die nicht gesetzt oder null sind. .IP LC_ALL Falls dies auf einen nicht leeren Zeichenkettenwert gesetzt ist, überschreibt es die Werte aller anderen Internationalisierungsvariablen. .IP LC_COLLATE Der POSIX\-Standard spezifiziert, dass diese Variable die Mustersuche beeinflusst, die bei der Option \fB\-name\fP benutzt wird. GNU\-Find benutzt die Bibiliotheksfunktion \fBfnmatch\fP(3) und unterstützt daher »LC_COLLATE« in Abhängigkeitt von der Systembibliothek. Diese Variable beeinflusst außerdem die Interpretation der Antwort auf \fB\-ok\fP; während die Variable »LC_MESSAGES« das Muster auswählt, das tatsächlich benutzt wird, um die Antwort auf \fB\-ok;\fP zu interpretieren, wird die Interpretation jeglicher Ausdrücke mit Klammern im Muster durch »LC_COLLATE« beeinflusst. .IP LC_CTYPE Diese Variable beeinflusst die Behandlung von Zeichenklassen, die in regulären Ausdrücken ebenso wie im Test \fB\-name\fP benutzt wird, falls die Bibliotheksfunktion \fBfnmatch\fP(3) des Systems dies unterstützt. Diese Variable beeinflusst außerdem die Interpretation jeglicher Zeichenklassen, die in regulären Ausdrücken benutzt werden, um die Antwort auf die durch \fB\-ok\fP angegebene Abfrage zu interpretieren. Die Umgebungsvariable »LC_CTYPE« wird außerdem beeinflussen, welche Zeichen als nicht abdruckbar betrachtet werden, wenn Dateinamen ausgegeben werden; siehe den Abschnitt UNÜBLICHE DATENAMEN. .IP LC_MESSAGES bestimmt die Locale, die für internationalisierte Meldungen verwendet werden soll. Falls die Umgebungsvariable »POSIXLY_CORRECT« gesetzt ist, bestimmt dies außerdem die Interpretation der Antwort auf die durch die Aktion \fB\-ok\fP angegebene Abfrage. .IP NLSPATH bestimmt den Speicherort der Internationalisierungs\-Meldungskataloge. .IP PATH beeinflusst die Verzeichnisse, die durchsucht werden, um die ausführbaren Dateien zu finden, die durch \fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP und \fB\-okdir\fP aufgerufen werden. .IP POSIXLY_CORRECT bestimmt die von \fB\-ls\fP und \fB\-fls\fP benutzte Blockgröße, Falls \fBPOSIXLY_CORRECT\fP gesetzt ist, sind Blöcke Einheiten von 512 Byte. Andernfalls sind es Einheiten von 1024 Byte. .IP Das Setzen dieser Variable schaltet außerdem standardmäßig Warnmeldungen aus (sprich, es impliziert \fB\-nowarn\fP), da POSIX erfordert, dass unabhängig von der Ausgabe von \fB\-ok\fP alle Meldungen auf der Standardfehlerausgabe Diagnosen sind und in einem Rückgabewert ungleich null resultieren müssen. .IP Wenn \fBPOSIXLY_CORRECT\fP nicht gesetzt ist, wird \fB\-perm \fP\fI+zzz\fP nur wie \fB\-perm \fP\fI/zzz\fP betrachtet, falls \fI+zzz\fP kein gültiger symbolischer Modus ist. Wenn \fBPOSIXLY_CORRECT\fP gesetzt ist, werden solche Konstruktionen als Fehler betrachtet. .IP Wenn \fBPOSIXLY_CORRECT\fP gesetzt ist, hängt die Interpretation der Antwort auf die, durch die Aktion \fB\-ok\fP angegebene Abfrage, von den Meldungskatalogen des Systems ab, im Gegensatz zur Beachtung der eigenen Meldungsübersetzungen von \fBfind\fP. .IP TZ beeinflusst die Zeitzone, die für einige zeitbezogene Formatanweisungen von \fB\-printf\fP und \fB\-fprintf\fP benutzt wird. . .SH BEISPIELE .\" A bulleted \[bu] list of examples. .SS "Einfacher Ansatz mit »find|xargs«" .IP \[bu] Dateien mit dem Namen \fBcore\fP in oder unterhalb des Verzeichnisses \fB/tmp\fP suchen und diese löschen. .nf \& .in +4m \fB$ find /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP .in \& .fi Beachten Sie, dass dies nicht korrekt funktioniert, falls die Dateinamen Zeilenvorschübe, einfache oder doppelte Anführungszeichen oder Leerzeichen enthalten. . .SS "Sicherer Ansatz mit »find \-print0 | xargs \-0«" .IP \[bu] sucht Dateien mit dem Namen \fIcore\fP in oder unterhalb des Verzeichnisses \fI/tmp\fP und löscht diese. Verarbeitet Dateinamen auf eine Weise, in der Datei\- oder Verzeichnisnamen, die Dateinamen einfache oder doppelte Anführungszeichen, Leerzeichen oder Zeilenvorschübe enthalten, korrekt gehandhabt werden. .nf \& .in +4m \fB$ find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP .in \& .fi Der Test \fB\-name\fP kommt in der Reihenfolge vor dem Test \fB\-type\fP, um zu verhindern, dass \fBstat\fP(2) für jede Datei aufgerufen wird. .PP Beachten Sie, dass es immer noch einen Wettlauf zwischen der Zeit, die \fBfind\fP zum Durchsuchen des Dateisystems und der Ausgabe der passenden Dateinamen einerseits und der Zeit, die der von \fBxargs\fP aufgerufene Prozess für die Arbeit mit der Datei braucht, gibt. .SS "Ausführen eines Befehls für jede Datei" .IP \[bu] Den Befehl \fIfile\fP für jede Datei in oder unterhalb des aktuellen Verzeichnisses ausführen. .nf \& .in +4m \fB$ find . \-type f \-exec file \(aq{}\(aq \e;\fP .in \& .fi Beachten Sie, dass Klammern in einfache Anführungszeichen eingeschlossen werden, um sie vor einer Interpretation als Shell\-Skript\-Zeichensetzung zu schützen. Der Strichpunkt wird gleichermaßen durch die Benutzung des Rückwärtsschrägstrichs geschützt, da einfache Anführungszeichen in diesem Fall ebenfalls benutzt werden könnten. .PP In vielen Fällen könnten Sie die Syntax \fB»\-exec\ \&…\&\ +«\fP oder besser noch \fB»\-execdir\ \&…\&\ +«\fP aus Leistungs\- und Sicherheitsgründen bevorzugen. . .SS "Einmaliges Durchlaufen des Dateisystems \- für 2 verschiedene Aktionen" .IP \[bu] das Dateisystem nur einmal durchlaufen, set\-user\-ID\-Dateien und Verzeichnisse in \fI/root/suid.txt\fP und große Dateien in \fI/root/big.txt\fP auflisten. .nf \& .in +4m \fB$ find / \e\fP .in +4m \fB\e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e\fP .br \fB\e( \-size +100M \-fprintf /root/big.txt \(aq%\-10s %p\en\(aq \e)\fP .in -4m .in -4m \& .fi Dieses Beispiel verwendet das Zeilenfortführungszeichen »\e« auf den ersten zwei Zeilen, um die Shell anzuweisen, mit dem Einlesen des Befehls auf der nächsten Zeile fortzufahren. . .SS "Dateisuche anhand des Alters" .IP \[bu] Nach Dateien in Ihrem Home\-Verzeichnis suchen, die in den letzten 24 Stunden geändert wurden. .nf \& .in +4m \fB$ find $HOME \-mtime 0\fP .in \& .fi Dieser Befehl funktioniert auf diese Art, weil die Zeit, seit jede Datei zuletzt verändert wurde, durch 24 Stunden geteilt und der Rest verworfen wird. Dies bedeutet, dass eine Datei, um \fB\-mtime\fP \fB0\fP zu entsprechen, eine Veränderung in der Vergangenheit haben muss, die weniger als 24 Stunden zurückliegt. . .SS "Dateisuche anhand der Zugriffsrechte" .IP \[bu] sucht Dateien, die ausführbar, aber nicht lesbar sind .nf \& .in +4m \fB$ find /sbin /usr/sbin \-executable \e! \-readable \-print\fP .in \& .fi . .IP \[bu] Nach Dateien suchen, die Lese\- und Schreibrechte für ihren Benutzer und ihre Gruppe haben, aber von anderen Benutzern gelesen, aber nicht geschrieben werden können. .nf \& .in +4m \fB$ find . \-perm 664\fP .in \& .fi Dateien, die diesem Kriterium entsprechen, aber andere Rechte\-Bits gesetzt haben (zum Beispiel, wenn jemand die Datei ausführen kann), werden nicht passen. . .IP \[bu] Nach Dateien suchen, die Lese\- und Schreibrechte für ihren Benutzer und ihre Gruppe haben und die von anderen Benutzern gelesen werden können, ohne das Vorhandensein irgendwelcher zusätzlicher Rechte\-Bits (zum Beispiel des Bits für Ausführbarkeit) zu betrachten. .nf \& .in +4m \fB$ find . \-perm \-664\fP .in \& .fi Dies wird beispielsweise auf eine Datei mit dem Modus \fI0777\fP passen. . .IP \[bu] sucht nach Dateien, die für irgendjemanden schreibbar sind (ihren Besitzer, ihre Gruppe oder irgendjemand anderes). .nf \& .in +4m \fB$ find . \-perm /222\fP .in \& .fi . .IP \[bu] Nach Dateien suchen, die für ihren Besitzer oder ihre Gruppe schreibbar sind. .nf \& .in +4m \fB$ find . \-perm /220\fP \fB$ find . \-perm /u+w,g+w\fP \fB$ find . \-perm /u=w,g=w\fP .in \& .fi Diese drei Befehle tun alle dasselbe, aber der Erste benutzt die oktale Darstellung des Dateimodus und die beiden anderen benutzen die symbolische Form. Die Dateien müssen nicht sowohl für Besitzer und Gruppe schreibbar sein, um zu passen; eines genügt. . .IP \[bu] Nach Dateien suchen, die für ihren Besitzer oder ihre Gruppe schreibbar sind. .nf \& .in +4m \fB$ find . \-perm \-220\fP \fB$ find . \-perm \-g+w,u+w\fP .in \& .fi Beide Befehle führen das Gleiche aus. . .IP \[bu] Eine ausgeklügeltere Suche nach Berechtigungen. .nf \& .in +4m \fB$ find . \-perm \-444 \-perm /222 \e! \-perm /111\fP \fB$ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x\fP .in \& .fi Diese beiden Befehle suchen nach Dateien, die für jedermann lesbar sind (\fB\-perm \-444\fP oder \fB\-perm \-a+r\fP), mindestens ein gesetztes Schreib\-Bit haben (\fB\-perm /222\fP oder \fB\-perm /a+w\fP), aber für niemanden ausführbar sind (\fB! \-perm /111\fP beziehungsweise \fB! \-perm /a+x\fP). . .SS "»Pruning« \- Dateien und Verzeichnisse auslassen" .IP \[bu] Dieser Befehl kopiert den Inhalt aus dem \fI/Quellverzeichnis\fP in das \fI/Zielverzeichnis\fP, lässt aber Dateien und Verzeichnisse mit Namen \&\fB.snapshot\fP aus (und alles, was sich darin befindet). Er lässt außerdem alle Dateien und Verzeichnisse aus, deren Name auf \fB\(ti\fP endet, nicht jedoch ihren Inhalt. .nf \& .in +4m \fB$ cd /Quellverzeichnis\fP \fB$ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e) \e\fP .br .in +4m \fB| cpio \-pmd0 /dest\-dir\fP .in -4m .in -4m \& .fi Die Konstruktion \fB\-prune\ \-o\ \e(\ \&…\&\ \-print0\ \e)\fP ist ziemlich gebräuchlich. Die Idee besteht hier darin, dass der Ausdruck vor \fB\-prune\fP auf die Dinge passt, die gekürzt werden. Die Aktion \fB\-prune\fP selbst gibt jedoch wahr zurück, daher stellt das folgende \fB\-o\fP sicher, dass die rechte Seite nur für die Verzeichnisse ausgewertet wird, die nicht gekürzt wurden (der Inhalt der gekürzten Verzeichnisse wird nicht einmal besucht und ist daher irrelevant). Der Ausdruck auf der rechten Seite von \fB\-o\fP ist nur der Übersichtlichkeit halber in Klammern. Dies hebt hervor, dass die Aktion \fB\-print0\fP nur den Platz von Dingen einnimmt, auf die \fB\-prune\fP nicht angewandt wurde. Da die Standardbedingung »and« zwischen Tests fester verbindet als \fB\-o\fP, ist dies sowieso die Vorgabe, aber die Klammern helfen zu zeigen, was passiert. . .IP \[bu] Beim folgenden gegebenen Verzeichnis mit Projekten und den damit verbundenen Versionsverwaltungsverzeichnissen wird eine effiziente Suche nach den Wurzeln der Projekte durchgeführt: .nf \& .in +4m \fB$ find repo/ \e\fP .in +4m \fB\e( \-exec test \-d \(aq{}/.svn\(aq \e; \e\fP \fB\-or \-exec test \-d \(aq{}/.git\(aq \e; \e\fP \fB\-or \-exec test \-d \(aq{}/CVS\(aq \e; \e\fP \fB\e) \-print \-prune\fP .in -4m .in -4m \& .fi Beispielausgabe: .nf \& .in +4m \fBrepo/project1/CVS\fP \fBrepo/gnu/project2/.svn\fP \fBrepo/gnu/project3/.svn\fP \fBrepo/gnu/project3/src/.svn\fP \fBrepo/project4/.git\fP .in \& .fi In diesem Beispiel verhindert \fB\-prune\fP unnötiges Absteigen in Verzeichnisse, die bereits entdeckt wurden (zum Beispiel wird \fIproject3/src\fP nicht durchsucht, da es bereits in \fIproject3/.svn\fP gefunden wurde), aber es stellt sicher, dass Geschwisterverzeichnisse (\fIproject2\fP und \fIproject3\fP) gefunden werden. . .SS "Weitere nützliche Beispiele" .IP \[bu] Nach verschiedenen Dateitypen suchen .nf \& .in +4m \fB$ find /tmp \-type f,d,l\fP .in \& .fi sucht nach Dateien, Verzeichnissen und symbolischen Links im Verzeichnis \fI/tmp\fP. Dabei werden die Typen als Komma\-separierte Liste übergeben (GNU\-Erweiterung), was ansonsten äquivalent zu dem folgenden längeren, portableren Ausdruck ist: .nf \& .in +4m \fB$ find /tmp \e( \-type f \-o \-type d \-o \-type l \e)\fP .in \& .fi . .IP \[bu] Nach Dateien mit dem Namen \fINadel\fP suchen und sofort anhalten, wenn der erste Treffer gefunden wird: .nf \& .in +4m \fB$ find / \-name Nadel \-print \-quit\fP .in \& .fi . .IP \[bu] Darstellung, wie die Formatanweisungen \fB%f\fP und \fB%h\fP für die \fB\-printf\fP\-Aktion in einigen Grenzfällen interpretiert wird. Hier ist ein Beispiel, das auch einige Ausgaben enthält. .nf \& .in +4m \fB$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find \-maxdepth 0 \-printf '[%h][%f]\en'\fP \fB[.][.]\fP \fB[.][..]\fP \fB[][/]\fP \fB[][tmp]\fP \fB[/tmp][TRACE]\fP \fB[.][compile]\fP \fB[compile/64/tests][find]\fP .in \& .fi . .SH EXIT\-STATUS \fBfind\fP endet mit Status Null, falls alle Dateien erfolgreich verarbeitet wurden und größer als Null, falls ein Fehler aufgetreten ist. Dies ist absichtlich eine sehr weitgehende Beschreibung, aber falls der Rückgabewert ungleich Null ist, sollten Sie sich nicht auf die Richtigkeit des Ergebnisses von \fBfind\fP verlassen. Wenn ein Fehler auftritt, stoppt \fBfind\fP unmittelbar, ohne alle angegebenen Aktionen abzuschließen. Zum Beispiel werden einige der Startpunkte nicht untersucht oder einige ausstehenden Programmaufrufe für \fB\-exec\ \&…\&\ {}\ +\fP oder \fB\-execdir\ \&…\&\ {}\ +\fP werden nicht ausgeführt. . .SH GESCHICHTE Ab findutils\-4.2.2 stimmen Shell\-Metazeichen (»*«, »?« oder »[]« zum Beispiel), die in Mustern für Dateinamen verwendet werden, mit einem führenden ».« überein, da die Interpretation 126 von IEEE POSIX dies erfordert. .P Ab findutils\-4.3.3 passt \fB\-perm\ /000\fP nun auf alle Dateien statt auf keine. .P Zeitstempel in Nanosekundenauflösung wurden in findutils\-4.3.3 implementiert. .P Ab findutils\-4.3.11 setzt die Aktion \fB\-delete\fP den Rückgabewert von \fBfind\fP auf einen Wert ungleich null, wenn sie fehlschlägt. \fBfind\fP wird jedoch nicht sofort beendet. Vorher wurde der Rückgabewert von \fBfind\fP nicht durch ein Scheitern von \fB\-delete\fP beeinflusst. .TS l l l . Funktion Hinzugefügt in Erscheint auch in \-newerXY 4.3.3 BSD \-D 4.3.1 \-O 4.3.1 \-readable 4.3.0 \-writable 4.3.0 \-executable 4.3.0 \-regextype 4.2.24 \-exec … + 4.2.12 POSIX \-execdir 4.2.12 BSD \-okdir 4.2.12 \-samefile 4.2.11 \-H 4.2.5 POSIX \-L 4.2.5 POSIX \-P 4.2.5 BSD \-delete 4.2.3 \-quit 4.2.3 \-d 4.2.3 BSD \-wholename 4.2.0 \-iwholename 4.2.0 \-ignore_readdir_race 4.2.0 \-fls 4.0 \-ilname 3.8 \-iname 3.8 \-ipath 3.8 \-iregex 3.8 .TE .P Die Syntax \fB\-perm +MODE\fP wurde in findutils\-4.5.12 zugunsten von \fB\-perm\fP \fB/MODUS\fP entfernt. Die Syntax \fB+MODE\fP wurde als veraltet markiert, da findutils\-4.2.21 bereits im Jahre 2005 veröffentlicht wurde. . .SH "KEINE FEHLER" .SS "Überraschungen bei Operatorenvorrangsregeln" Der Befehl \fBfind . \-name afile \-o \-name bfile \-print\fP gibt niemals \fIafile\fP aus, da der Befehl tatsächlich äquivalent zu \fBfind . \-name afile \-o \e( \-name bfile \-a \-print \e)\fP ist. Denken Sie daran, dass \fB\-a\fP Vorrang vor \fB\-o\fP hat und dass, sofern kein Operator zwischen den Tests angegeben ist, \fB\-a\fP angenommen wird. .SS "Fehlermeldungen \(lqDer Pfad muss vor dem Ausdruck stehen\rq" .nf \fB$ find . \-name *.c \-print\fP find: Der Pfad muss vor dem Ausdruck stehen find: Mögliches nichtgeschütztes Muster nach dem Prädikaten »\-name«? .fi .P Dies passiert, wenn die Shell das Muster \fI*.c\fP auf mehr als einen im aktuellen Verzeichnis existierenden Dateinamen expandieren könnte und die entstehenden Dateinamen in der Befehlszeile wie folgt an \fBfind\fP weitergibt: .nf . \fBfind . \-name frcode.c locate.c word_io.c \-print\fP . .fi Dieser Befehl wird natürlich nicht funktionieren, da das Prädikat \fB\-name\fP nur genau ein Muster als Argument erlaubt. Statt auf diese Art zu arbeiten, sollten Sie das Muster in Anführungszeichen einschließen oder den Platzhalter schützen, und damit \fBfind\fP erlauben, das Muster mit dem Platzhalter während der Suche auf passende Dateinamen zu verwenden, statt die Dateinamen durch die Eltern\-Shell zu expandieren: .nf \fB$ find . \-name \(aq*.c\(aq \-print\fP \fB$ find . \-name \e*.c \-print\fP .fi . .SH FEHLER Es gibt Sicherheitsprobleme, die dem durch den POSIX\-Standard für \fBfind\fP definierten Verhalten innewohnen und die daher nicht behoben werden können. Die Aktion \fB\-exec\fP ist zum Beispiel von Natur aus unsicher und es sollte stattdessen \fB\-execdir\fP verwendet werden. . .P Die Umgebungsvariable \fBLC_COLLATE\fP hat keinen Einfluss auf die Aktion \fB\-ok\fP. . .SH "FEHLER MELDEN" Onlinehilfe für GNU findutils: .br Melden Sie Fehler in der Übersetzung an .UR https://translationproject.org/team/de.html das deutschsprachige Team beim GNU Translation Project .UE . .PP Melden Sie alle anderen Fehler über das Formular im Fehlererfassungssystem bei GNU Savannah: .RS .RE Allgemeine Themen zum GNU\-Findutils\-Paket werden in der Mailingliste \fIbug\-findutils\fP diskutiert: .RS .RE . .SH COPYRIGHT Copyright \(co 1990\-2021 Free Software Foundation, Inc. Lizenz GPLv3+: .UR https://gnu.org/licenses/gpl.html GNU GPL Version 3 .UE oder neuer. .br Dies ist freie Software: Sie können sie verändern und weitergeben. Es gibt KEINE GARANTIE, soweit gesetzlich zulässig. . .SH "SIEHE AUCH" \fBchmod\fP(1), \fBlocate\fP(1), \fBls\fP(1), \fBupdatedb\fP(1), \fBxargs\fP(1), \fBlstat\fP(2), \fBstat\fP(2), \fBctime\fP(3) \fBfnmatch\fP(3), \fBprintf\fP(3), \fBstrftime\fP(3), \fBlocatedb\fP(5), \fBregex\fP(7) .PP Die vollständige Dokumentation ist auf .br oder lokal via: \fBinfo find\fP .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Chris Leick , Mario Blättermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .