-print
ist die Standard - Aktion . Einige find
Prädikate werden als Aktionen im Gegensatz zu Filtern oder Bedingungen betrachtet . Zum Beispiel -type f
ist keine Aktion. -exec
ist eine Aktion, obwohl sie auch als Bedingung verwendet werden kann.
Die Maßnahmen umfassen -print
, -exec
und -ok
. Einige find
Implementierungen haben andere Nicht-Standard - Aktion Prädikate wie die -print0
, -printf
, -execdir
, -okdir
, -ls
...
find files <some-predicates>
Wenn keine der <some-predicates>
enthaltenen Aktionen äquivalent ist zu:
find files \( <some-predicates> \) -print
(Beachten Sie die obigen Klammern, die wichtig sind, wenn es einige -o
Operatoren gibt).
Im Zweifelsfall ist es am besten, sie -print
explizit zu verwenden (oder -exec printf '%s\0' {} +
(oder -print0
wo verfügbar), damit die Ausgabe nachbearbeitet werden kann).
Die Standardaktion -print
wird von POSIX festgelegt. Einige alte find
Implementierungen erforderten eine explizite-print
, aber diese sind heutzutage in der Regel nicht in der Natur zu finden.
Beachten Sie auch, dass bei einigen find
Implementierungen das weggelassen werden files
kann. In diesem Fall wird standardmäßig im aktuellen Verzeichnis gesucht. Das heißt für sie
find
ist äquivalent zu
find .
find . -print
Das ist aber kein Standard, also wird es am besten vermieden.
Am ausführlicheren (und nützlicheren) Ende des Spektrums find
erlauben einige Implementierungen auch die Übergabe von Dateipfaden als Argument an eine -f
Option wie in:
find -f "$file1" -f "$file2" -print
Sie sind die einzigen find
Implementierungen, an die beliebige Dateipfade übergeben werden können find
. Andere Implementierungen akzeptieren keine Dateipfade wie !
oder -print
... und setzen daher find "$file" -print
(oder sogar find -- "$file" -print
) voraus, dass $file
es sich nicht um den Namen eines find
Prädikats (oder einer Option im ersten Fall) handelt.
Leider ist das weder Standard noch portabel.