-printist die Standard - Aktion . Einige findPrädikate werden als Aktionen im Gegensatz zu Filtern oder Bedingungen betrachtet . Zum Beispiel -type fist keine Aktion. -execist eine Aktion, obwohl sie auch als Bedingung verwendet werden kann.
Die Maßnahmen umfassen -print, -execund -ok. Einige findImplementierungen 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 -oOperatoren gibt).
Im Zweifelsfall ist es am besten, sie -printexplizit zu verwenden (oder -exec printf '%s\0' {} +(oder -print0wo verfügbar), damit die Ausgabe nachbearbeitet werden kann).
Die Standardaktion -printwird von POSIX festgelegt. Einige alte findImplementierungen erforderten eine explizite-print , aber diese sind heutzutage in der Regel nicht in der Natur zu finden.
Beachten Sie auch, dass bei einigen findImplementierungen das weggelassen werden fileskann. 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 finderlauben einige Implementierungen auch die Übergabe von Dateipfaden als Argument an eine -fOption wie in:
find -f "$file1" -f "$file2" -print
Sie sind die einzigen findImplementierungen, 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 $filees sich nicht um den Namen eines findPrädikats (oder einer Option im ersten Fall) handelt.
Leider ist das weder Standard noch portabel.