-print
est l' action par défaut . Certains find
prédicats sont considérés comme des actions et non comme des filtres ou des conditions . Par exemple, ce -type f
n'est pas une action.-exec
est une action même si elle peut également être utilisée comme condition.
Les actions incluent -print
, -exec
et -ok
. Certaines find
mises en œuvre ont d' autres actions non standard prédicats comme le -print0
, -printf
, -execdir
, -okdir
, -ls
...
find files <some-predicates>
Lorsqu'aucune action<some-predicates>
contient n'est équivalente à:
find files \( <some-predicates> \) -print
(notez les parenthèses ci-dessus qui sont importantes s'il y en a -o
opérateurs).
En cas de doute, le mieux est d'utiliser -print
explicitement (ou -exec printf '%s\0' {} +
(ou -print0
si disponible) afin que la sortie puisse être post-traitée).
L' -print
action par défaut est spécifiée par POSIX. Certaines anciennes find
implémentations nécessitaient une explicite-print
, mais celles-ci ne sont généralement pas trouvées dans la nature de nos jours.
Notez également que certaines find
implémentations permettent d'omettre le files
, auquel cas elles recherchent par défaut le répertoire courant. Autrement dit, pour eux,
find
est équivalent à
find .
find . -print
Ce n'est cependant pas standard, il est donc préférable d'éviter.
À l'extrémité la plus prolixe (et utile) du spectre, certaines find
implémentations permettent également de passer des chemins de fichier comme argument à une -f
option comme dans:
find -f "$file1" -f "$file2" -print
Ce sont les seules find
implémentations qui permettent de passer des chemins de fichiers arbitraires à find
. D'autres implémentations ne peuvent pas accepter les chemins de fichiers comme !
ou -print
... donc find "$file" -print
(ou même find -- "$file" -print
) suppose que ce $file
n'est pas le nom d'unfind
prédicat (ou option dans le premier cas).
Malheureusement, ce n'est pas non plus standard ni portable.