<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Find</id>
	<title>Find - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Find"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Find&amp;action=history"/>
	<updated>2026-05-23T18:21:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Find&amp;diff=608952&amp;oldid=prev</id>
		<title>imported&gt;Pluderhose: /* Weblinks */ deutsche Manpage nach vorn</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Find&amp;diff=608952&amp;oldid=prev"/>
		<updated>2025-08-12T10:12:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; deutsche Manpage nach vorn&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Begriffsklärungshinweis|Siehe auch: [[Fint]].}}&lt;br /&gt;
{{SEITENTITEL:find}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;find&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;/usr/bin/find&amp;lt;/code&amp;gt;) ist ein Programm zur Durchmusterung von [[Dateisystem|Filesystemen]]. Es ist ein grundlegender Bestandteil der Softwareausstattung von [[UNIX]]-Systemen und als solcher durch den&lt;br /&gt;
[[POSIX]]-Standard (beziehungsweise den identischen Standards IEEE Std 1003 und ISO/IEC 9945)&amp;lt;ref name=posix&amp;gt;{{Internetquelle |url=https://pubs.opengroup.org/onlinepubs/009695399/utilities/find.html |titel=find (Opengroup Base Specifications Issue 6)|sprache=en|zugriff=2018-03-08}}&amp;lt;/ref&amp;gt; definiert, als &amp;#039;&amp;#039;mandatory&amp;#039;&amp;#039; (erforderlicher Bestandteil) gekennzeichnet und somit Teil der [[Single UNIX Specification]]. Auch UNIX-ähnliche Betriebssysteme verfügen in der Regel über diesen Befehl.&lt;br /&gt;
&lt;br /&gt;
Unter [[Microsoft Windows]] gibt es ebenfalls den Befehl &amp;#039;&amp;#039;find&amp;#039;&amp;#039;, dieser durchsucht jedoch den Inhalt von Dateien und hat eher (entfernte) Ähnlichkeit mit dem Kommando [[grep]].&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Das erste &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; erschien in &amp;#039;&amp;#039;Fifth Edition Unix&amp;#039;&amp;#039; (ca. Juni 1974) als Teil des [[PWB/UNIX]]-Projekts (&amp;#039;&amp;#039;Programmer’s Workbench&amp;#039;&amp;#039;), der in &amp;#039;&amp;#039;Research Unix&amp;#039;&amp;#039;&amp;lt;ref name=resunix&amp;gt;Die Bezeichnung wurde allerdings erst ab 1978 für diese Entwicklungslinie gebräuchlich, um sie von PWB/UNIX und [[MERT]] abzugrenzen, siehe &amp;#039;&amp;#039;Bell System Technical Journal&amp;#039;&amp;#039; Vol. 57, No 6, Pt. 2 Jul/Aug 1978&amp;lt;/ref&amp;gt; übernommen wurde. Es wurde von &amp;#039;&amp;#039;&amp;#039;Richard C. (&amp;#039;&amp;#039;Dick&amp;#039;&amp;#039;) Haight&amp;#039;&amp;#039;&amp;#039;, einem Mitglied der PWB/UNIX-Entwickler, geschrieben, ebenso wie [[cpio]] und [[expr]].&amp;lt;ref name=mcill&amp;gt;{{Internetquelle |url=https://www.cs.dartmouth.edu/~doug/reader.pdf |titel=A Research Unix reader: annotated excerpts from the Programmer&amp;#039;s Manual, 1971–1986|format=pdf|sprache=en|autor=[[Douglas McIlroy|M. Douglas McIlroy]]|zugriff=2018-03-08}}&amp;lt;/ref&amp;gt; &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;cpio&amp;lt;/code&amp;gt; wurden für den gemeinsamen Einsatz entworfen.&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
Als typisches Kommandozeilen-Utility ist das Verhalten &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;s durch die Sektion 12.2 des Standards (&amp;#039;&amp;#039;Utility Syntax Guidelines&amp;#039;&amp;#039;) geregelt.&amp;lt;ref name=usg&amp;gt;{{Internetquelle |url=https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02 |titel=The Open Group Base Specifications Issue 7, 2018 edition, Kap. 12. Utility Conventions |sprache=en|zugriff=2019-05-15}}&amp;lt;/ref&amp;gt; Ausgehend von einem anzugebenden Basisverzeichnis durchschreitet &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; die Filesystemstruktur rekursiv und erzeugt eine Liste von Filesystem-Inhalten (Files, Directories etc..), die (wenigstens in den meisten Fällen) auf &amp;lt;code&amp;gt;&amp;lt;stdout&amp;gt;&amp;lt;/code&amp;gt; ausgegeben wird. Diese Liste kann durch einen oder mehrere &amp;#039;&amp;#039;Operanden&amp;#039;&amp;#039; nach verschiedenen Gesichtspunkten fortschreitend eingeschränkt werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -print                     # jeden Eintrag in /some/dir anzeigen&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -type f -print             # angezeigte Einträge auf (reguläre) Dateien beschränken&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -type f -name &amp;#039;x*&amp;#039; -print  # angezeigte Einträge auf Dateien deren Namen mit „x“ beginnt, einschränken&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist möglich, mehrere solche Operanden durch logische Operationen (UND, ODER, NICHT) zu verknüpfen wie auch durch Klammern die Präzedenz der Operanden zu beeinflussen. So können auch komplexe Filtertypen realisiert werden.&lt;br /&gt;
&lt;br /&gt;
Allen Operanden ist gemeinsam, dass sie als Ergebnis ein logisches &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt; zurückgeben, aufgrund dessen die gerade untersuchte Entität an der weiteren Verarbeitung teilnimmt (bis sie – üblicherweise – am Schluss ausgegeben wird) oder von derselben ausgeschlossen wird.&lt;br /&gt;
&lt;br /&gt;
Es ist möglich, das Ausgabeformat auf den reinen Dateinamen zu beschränken (&amp;lt;code&amp;gt;-print&amp;lt;/code&amp;gt;) oder auch eine Liste von Attributen in Tabellenform (&amp;lt;code&amp;gt;-ls&amp;lt;/code&amp;gt;, was eine Ausgabe ähnlich der des Kommandos &amp;lt;code&amp;gt;ls -dils&amp;lt;/code&amp;gt; bewirkt) auszugeben.&lt;br /&gt;
&lt;br /&gt;
=== -exec ===&lt;br /&gt;
Eine besondere Stellung unter den Operanden nimmt &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; ein. Es erwartet als Argument ein (einfaches oder auch zusammengesetztes) Kommando, in welchem der Name der gerade untersuchten Entität durch das Symbol &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; vertreten wird. Damit ist es möglich, für eine eben erzeugte Liste von Filesystem-Einträgen eine durch ein Kommando repräsentierte Aktion durchzuführen. Das Beispiel sucht in allen Dateien &amp;lt;code&amp;gt;*.c&amp;lt;/code&amp;gt; in dem Directory &amp;lt;code&amp;gt;/some/dir&amp;lt;/code&amp;gt; nach Aufrufen oder dem Code der Funktion &amp;lt;code&amp;gt;myfunc()&amp;lt;/code&amp;gt; (die Datei &amp;lt;code&amp;gt;/dev/null&amp;lt;/code&amp;gt; wird angegeben, damit &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; die Dateinamen der Fundstellen mit anzeigt):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -type f -name &amp;#039;*\.c&amp;#039; -exec grep &amp;#039;myfunc&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;#039; /dev/null {} \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus gibt &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; als Rückgabewert den &amp;#039;&amp;#039;Return Code&amp;#039;&amp;#039; des aufgerufenen Kommandos zurück, sodass es ebenfalls für 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:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -type f -name &amp;#039;*\.c&amp;#039; -exec grep -q &amp;#039;myfunc&amp;lt;nowiki&amp;gt;(&amp;lt;/nowiki&amp;gt;&amp;#039; {} \; -print&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
geschehen.&lt;br /&gt;
&lt;br /&gt;
=== Zeitmessung und -vergleiche ===&lt;br /&gt;
Verschiedene Operanden (&amp;lt;code&amp;gt;-atime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-ctime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-mtime&amp;lt;/code&amp;gt;) ermöglichen das Vergleichen von Zeitstempeln von Dateien, wobei die Vergleichszeiträume in &amp;#039;&amp;#039;Tagen&amp;#039;&amp;#039; angegeben werden. Tatsächlich werden diese Zeiträume allerdings als Ergebnis einer Integer-Division der Zeitdifferenz in Sekunden durch 86400 interpretiert. Der Standard führt in seinen Erläuterungen als (hier vervollständigtes) Beispiel&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/dir -atime 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
an&amp;lt;ref name=posix /&amp;gt;, das alle Dateien (oder sonstigen Filesystem-Entitäten) findet, deren Zeitpunkt des letzten Zugriffs zwischen 48 und 72 Stunden vor Ausführung des Befehls liegt.&lt;br /&gt;
&lt;br /&gt;
== Hinweise und Einschränkungen ==&lt;br /&gt;
=== Numerische Argumente ===&lt;br /&gt;
Verschiedene Operanden (zum Beispiel &amp;lt;code&amp;gt;-size&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;-atime&amp;lt;/code&amp;gt;) erwarten numerische Argumente. Bei solchen gilt, dass die Angabe &amp;#039;&amp;#039;n&amp;#039;&amp;#039; (für numerische Werte &amp;#039;&amp;#039;n&amp;#039;&amp;#039;) immer &amp;#039;&amp;#039;genau n&amp;#039;&amp;#039; bedeutet, &amp;#039;&amp;#039;-n&amp;#039;&amp;#039; hingegen &amp;#039;&amp;#039;kleiner als n&amp;#039;&amp;#039; und &amp;#039;&amp;#039;+n&amp;#039;&amp;#039; bedeutet &amp;#039;&amp;#039;größer als n&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Vorsicht bei -exec ===&lt;br /&gt;
Da oftmals beim Aufruf von &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; nicht feststeht, wie viele Treffer schließlich im Ergebnis-Set vorliegen, kann die Verwendung von &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; zu einer unverhältnismäßigen Belastung des Systems führen, da ja für jeden Treffer ein (durch vergleichsweise hohen Ressourcenverbrauch gekennzeichneter) [[Fork (Unix)|fork()]]-Systemcall durchzuführen ist.&lt;br /&gt;
&lt;br /&gt;
=== Execplus ===&lt;br /&gt;
Mit dem POSIX-Standard konforme Implementationen kennen deshalb das den externen Aufruf abschließende Plus (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). Hier wird das externe Kommando mit einer Liste von Treffern gleichzeitig aufgerufen, sodass die erwähnte Belastung des Systems durch viele fork()-s verringert wird. Gleichzeitig aber wird der Rückgabewert des Kommandos für eine einzelne Datei unbestimmt, sodass &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; nicht mehr weiter als filternder Operand wirken kann.&lt;br /&gt;
&lt;br /&gt;
Weitere Probleme bei der Verwendung von &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; können sich bei komplexen Kommandos ergeben: es ist zwar grundsätzlich möglich, verschachtelte Kommandos zu verwenden, aber letztlich ist &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; keine Shell und deshalb in der Interpretation solcher Schachtelungen beschränkt. Insbesondere Shell-übliche Konstruktionen wie etwa die logische Verknüpfung &amp;#039;&amp;#039;cmd1 &amp;amp;&amp;amp; cmd2&amp;#039;&amp;#039; schlagen innerhalb von Kommandos in &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; fehl.&lt;br /&gt;
&lt;br /&gt;
=== {} und -exec ===&lt;br /&gt;
Das Argument &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; kann lediglich ein einziges Mal in einem &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt;-Operanden verwendet werden, nicht öfter. Darüber hinaus muss es als einzelnes (das heißt alleinstehendes) Argument verwendet werden. Die folgenden Konstruktionen sind deshalb alle ungültig:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/where -type f -exec mv {} {}.old \;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;find /some/where -type f -exec gzip {} &amp;gt;/packed/files/{} \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für solche Zwecke sollte ein Script geschrieben werden, dem als Parameter der Dateiname übergeben wird und das als Argument in &amp;lt;code&amp;gt;-exec&amp;lt;/code&amp;gt; eingesetzt wird. Etwa für das erste Beispiel:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ echo &amp;#039;mv $1 ${1}.old&amp;#039; &amp;gt; /tmp/mymove.sh&amp;lt;/code&amp;gt; &lt;br /&gt;
:&amp;lt;code&amp;gt;$ chmod u+x /tmp/mymove.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;$ find /some/where -type f -exec /tmp/mymove.sh {} \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schutz vor unendlichem Regress ===&lt;br /&gt;
In der Praxis kann es durchaus vorkommen, dass in Filesystemen (durch [[Harter Link|Hardlinks]] oder [[Symbolische Verknüpfung|Softlinks]]) Endlosreferenzen aufgebaut werden. Der POSIX-Standard schreibt deshalb vor, dass konforme Versionen diesen Umstand zu erkennen und die Rekursion abzubrechen haben.&amp;lt;ref name=posix /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nonstandard-Varianten ==&lt;br /&gt;
Das [[GNU]]-Projekt verfügt über einen Nachbau des Kommandos als Teil des &amp;#039;&amp;#039;findutils&amp;#039;&amp;#039;-Pakets. Es unterscheidet sich vom POSIX-konformen Original in einigen Punkten.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{man|1|find|gnu|in einer Verzeichnishierarchie nach Dateien suchen}}&amp;amp;nbsp;(deutsch)&lt;br /&gt;
* {{man|1|find|posix|find files}}&amp;amp;nbsp;(englisch)&lt;br /&gt;
* {{man|1|find|bsd|walk a file hierarchy}}&amp;amp;nbsp;(englisch)&lt;br /&gt;
* [https://shapeshed.com/unix-find/ Linux and Unix find command tutorial with examples (engl.)]&amp;amp;nbsp;(englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unix-Software]]&lt;br /&gt;
[[Kategorie:Unix-Betriebssystemkomponente]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Pluderhose</name></author>
	</entry>
</feed>