FIND(1) FIND(1)
find - Rechercher des fichiers dans une hirarchie de rpertoires
find [-H] [-L] [-P] [-D option-debogage] [-Oniveau] [chemin...]
[expression]
Cette page de manuel documente la version GNU de find. GNU find par-
court les arborescences des rpertoires de chacun des chemins mentionns,
en valuant les expressions fournies pour chaque fichier rencontr.
L'valuation de l'expression se fait de gauche droite, en suivant les
rgles de priorit dcrites dans la section OPRATEURS, jusqu' l'obtention
du rsultat (par exemple la partie gauche est fausse pour un oprateur
et, vraie pour un oprateur ou), puis find passe au nom de fichier suiv-
ant.
Si vous utilisez find dans un environnement dans lequel la scurit est
importante (si vous l'utilisez par exemple pour faire des recherches
dans des rpertoires qui sont accessibles en criture d'autres utilisa-
teurs), vous devriez lire le chapitre Security Considerations de la
documentation de findutils. Cette documentation, fournie par findutils,
s'appelle Finding Files (en anglais). Elle contient bien plus de dtails
et d'explications que cette page de manuel, et peut donc tre considre
comme une source d'informations plus utile.
Les options -H, -L et -P contrlent le traitement des liens symboliques.
Les paramtres de la ligne de commande qui les suivent sont considrs
comme des fichiers ou des rpertoires examiner, et ce jusqu'au premier
paramtre qui commence par - , ( ou ! . Ce paramtre, et tous ceux
qui suivent, sont considrs comme dcrivant ce qui doit tre recherch. Si
aucun chemin n'est prcis, c'est le rpertoire courant qui est utilis. Si
aucune expression n'est donne, c'est l'ordre -print qui est utilis
(quoi qu'il en soit, vous devriez plutt utiliser -print0).
Cette page de manuel dcrit les options contenues dans la liste
d'expressions. Ces options contrlent le comportement de find mais sont
indiques immdiatement aprs le dernier chemin. Les cinq options relles
-H, -L, -P, -D et -O doivent tre saisies avant le premier chemin, le
cas chant. Un double tiret -- pourra tre utilis afin d'indiquer que les
arguments restants ne sont pas des options (sachant qu'il est en gnral
plus sr de faire commencer les chemins de recherche par ./ ou /
lorsque vous utilisez des jokers).
-P Ne jamais suivre les liens symboliques, ce qui est le comporte-
ment par dfaut. Quand find analyse ou affiche les informations
concernant un fichier, et que ce fichier est un lien symbolique,
les informations utilises sont celles qui concernent le lien
symbolique lui-mme (et non le fichier point).
-L Suivre les liens symboliques. Quand find analyse ou affiche les
informations concernant un fichier, ce sont celles extraites des
caractristiques du fichier vers lequel mne les liens, et non
celle du lien lui-mme (sauf s'il s'agit d'un lien cass, ou si
find est incapable d'analyser le fichier vers lequel pointe le
lien). L'utilisation de cette option implique -noleaf qui sera
toujours active pour les utilisations ultrieures de l'option -P.
Si l'option -L est active et que find dcouvre un lien symbolique
vers un sous-rpertoire lors de ses recherches, le sous-rpertoire
point par le lien symbolique sera examin.
Quand l'option -L est active, le prdicat -type correspondra tou-
jours au type du fichier point par le lien symbolique plutt que
celui du lien lui-mme (sauf si le lien symbolique est cass). Les
prdicats -lname et -ilname renvoient toujours faux lors de
l'utilisation de -L.
-H Ne pas suivre les liens symboliques, sauf pour le traitement des
paramtres de la ligne de commande. Quand find analyse ou affiche
les informations concernant un fichier, celles qui sont utilises
viennent des proprits du lien symbolique lui mme (et non du
fichier point). La seule exception ce comportement est
lorsqu'un fichier indiqu sur la ligne de commande est lui-mme un
lien symbolique, et que ce lien peut tre rsolu. Dans ce cas, les
informations traites sont celles du fichier point par le lien
(autrement dit, le lien est suivi). Les informations concernant
le lien lui-mme sont utilises en dernier recours, si le fichier
point par le lien symbolique ne peut tre analys. Si l'option -H
est active, et que l'un des liens indiqus sur la ligne de com-
mande est un lien symbolique pointant vers un rpertoire, le con-
tenu de ce rpertoire sera analys (sachant bien sr que l'option
-maxdepth 0 l'en empcherait).
Si plus d'une option parmi -H, -L ou -P est indique, chacune crase les
prcdentes, et c'est la dernire qui apparat sur la ligne de commande qui
prime sur les autres. Puisque c'est l'option par dfaut, on considre que
c'est -P qui est active, moins que -H ou -L ne soient utilises.
La version find du GNU value souvent des fichiers pendant l'analyse de
la ligne de commande, et ce avant qu'une recherche n'ait commence. Ces
options modifient aussi la faon dont les paramtres sont traits. Plus
prcisment, il existe un certain nombre de tests qui comparent les
fichiers lists sur la ligne de commande et le fichier en cours d'anal-
yse. Dans tous les cas de figure, un fichier de la ligne de commande a
t analys et certaines de ses caractristiques ont t mmorises. Si le
fichier indiqu est en fait un lien symbolique, et que l'option -P est
active (ou que ni -H ni -L n'ont t prcises), alors l'information qui
sera utilise pour les comparaisons sera extraite des proprits du lien
symbolique. Sinon, elle sera extraite des proprits du fichier point par
le lien. Si find ne peut suivre le lien (soit parce ce qu'il ne dispose
pas des privilges suffisants, soit parce que le lien pointe vers un
fichier inexistant), alors ce sont les proprits du lien lui-mme qui
seront utilises.
Quand les options -H ou -L sont actives, tout lien symbolique donn
comme paramtre -newer sera drfrenc, et le timestamp utilis sera celui
du fichier point par le lien symbolique. Ceci s'applique de la mme faon
-newerXY, -anewer et -cnewer.
L'option -follow a le mme effet que -L, sauf qu'elle agit l'endroit o
elle apparat (c'est dire que si -L n'est pas utilise et que -follow
l'est, tout lien symbolique qui apparat sur la ligne de commande aprs
-follow sera drfrenc, et ceux apparaissant avant ne le seront pas).
-D options-debogage
Afficher des informations de diagnostic, ce qui peut tre pra-
tique pour analyser pourquoi find ne fait pas ce que vous lui
demandez. La liste des options de debogage devra utiliser des
virgules comme sparateurs. La compatibilit des options de debo-
gage n'est pas garantie au fil des versions de findutils. La
sortie de find -D help permet d'obtenir la liste complte des
options reconnues. Les options de debogage valides comportent
help Dcrire les options de debogage.
tree Afficher l'arbre de l'expression dans sa forme d'origine
et sa forme optimise.
stat Afficher des messages ds que des fichiers sont examins
via les appels systmes stat et lstat. Le programme find
tente de limiter ce type d'appels.
opt Afficher des informations de diagnostic lies l'optimisa-
tion de l'arbre de l'expression (voir l'option -O).
rates Afficher un rsum indiquant le nombre de succs ou d'checs
de chacun des prdicats.
-Oniveau
Activer l'optimisation des requtes. Le programme find rorganise
l'ordre des tests afin d'en acclrer l'excution tout en prservant
le rsultat exact, c'est--dire en vitant de modifier ceux qui ont
des effets de bords. Les optimisations ralises chacun des
niveaux sont les suivantes.
0 quivalent au niveau 1 d'optimisation.
1 Niveau d'optimisation par dfaut. Il correspond au com-
portement habituel. Les expressions sont rorganises afin
que les tests bass seulement sur les noms (comme -name ou
-regex par exemple) soient excuts en premier.
2 Tous les tests -type ou -xtype sont excuts aprs ceux bass
uniquement sur le nom des fichiers, mais avant tous les
tests qui traitent d'informations stockes dans l'inode.
Sur les versions modernes d'Unix, les types de fichiers
sont rcuprs par readdir(), et sont donc plus rapides
valuer que ceux qui ncessitent de travailler d'abord sur
le fichier.
3 Dans ce niveau d'optimisation, l'optimiseur de requtes
bas sur le cot total est activ. L'ordre des tests est
modifi afin que les tests les moins coteux (c'est--dire
les plus rapides) soient excuts en premier, et les plus
coteux excuts plus tard, si besoin est. l'intrieur d'un
mme niveau de cot, les prdicats sont valus plus ou moins
tt selon leur probabilit de succs. Avec l'oprateur -o,
les prdicats qui sont susceptibles de russir sont valus
plus tt, et avec l'oprateur -a, ce sont ceux qui risquent
d'chouer qui sont valus plus tt.
L'optimiseur bas sur le cot a une ide prcise des chances de
succs de n'importe quel test. Dans certains cas, cette proba-
bilit prend en compte la nature spcifique du test (par exemple,
l'estimation de succs d'un -type f est suprieure celle d'un
-type c). L'optimiseur bas sur le cot est actuellement en cours
d'valuation. S'il n'amliore pas les performances de find, il
sera de nouveau retir. Rciproquement, les optimisations qui
s'avrent fiables, robustes et efficaces pourront dans l'avenir
tre actives des niveaux d'optimisations moindres. Toutefois, le
comportement par dfaut (c'est dire le niveau d'optimisation 1)
ne sera pas modifi dans les diffrentes versions de la srie
4.3.x. La suite de tests unitaires de findutils est excute sur
chacun des niveaux d'optimisation de find afin de s'assurer que
le rsultat est constant.
L'expression est constitue d'options (affectant l'ensemble des opra-
tions plutt que le traitement d'un fichier particulier, et renvoyant
toujours vrai), de tests (renvoyant une valeur vraie ou fausse), et
d'actions (ayant des effets de bords et renvoyant une valeur vraie ou
fausse), tous ces lments tant spars par des oprateurs. Quand un opra-
teur est manquant, l'opration par dfaut -and est applique.
Si l'expression ne contient pas d'action autre que -prune, find
applique l'action -print par dfaut tous les fichiers pour lesquels
l'expression est vraie.
OPTIONS
Toutes les options renvoient toujours la valeur vraie. Except pour
-daystart, -follow et -regextype, elles ont toujours un effet global,
mme sur les tests indiqus avant l'option. En effet, les options sont
traites au moment o la ligne de commande est analyse, tandis que les
tests ne font rien avant que les fichiers ne soient examins. Les
options -daystart, -follow et -regextype sont diffrentes cet gard, et
ne s'appliqueront que sur les tests qui apparaissent plus tard sur la
ligne de commande. De ce fait, pour amliorer la lisibilit, il est
prfrable de les placer au dbut de l'expression. Vous recevrez un aver-
tissement dans les autres cas.
-d Un synonyme de -depth, dans un but de compatibilit avec FreeBSD,
NetBSD, MacOS X et OpenBSD.
-daystart
Mesurer les temps (avec -amin, -atime, -cmin, -ctime, -mmin, et
-mtime) depuis le dbut de la journe plutt que depuis 24 heures.
Cette option n'affecte que les tests qui sont indiqus plus loin
sur la ligne de commande.
-depth Traiter d'abord les sous-rpertoires avant le rpertoire lui-mme.
L'action delete implique aussi -depth.
-follow
Obsolte, utilisez plutt l'option -L la place. Drfrence les
liens symboliques. Ceci implique l'option -noleaf. L'option
-follow n'affecte que les tests qui apparaissent aprs son
apparition sur la ligne de commande. Sauf dans le cas o l'option
-H ou -L est indique, la position de l'option -follow change le
comportement du prdicat -newer, et tout fichier donn en paramtre
de -newer sera drfrenc s'il s'agit d'un lien symbolique. La mme
remarque s'applique -newerXY, -anewer et -cnewer. De la mme
faon, le prdicat -type correspondra toujours au type du fichier
point par le lien symbolique plutt que le type du lien lui-mme.
Les prdicats -lname et -ilname renvoient toujours faux lorsqu'on
utilise -follow.
-help, --help
Afficher un message d'aide concernant l'utilisation de find sur
la sortie standard et quitter.
-ignore_readdir_race
Normalement, find affiche un message d'erreur quand il choue
lors de l'analyse d'un fichier. Si vous utilisez cette option et
que le fichier est effac entre le moment o find lit le nom du
fichier dans le rpertoire et celui o il essaye de l'analyser,
vous n'obtiendrez aucun message d'erreur. Cela s'applique aussi
aux fichiers et rpertoires dont vous avez donn les noms sur la
ligne de commande. Cette option prend effet ds le moment o la
ligne de commande est lue, ce qui veut dire que vous ne pouvez
pas rechercher sur une partie du systme de fichiers avec cette
option active, et sur une autre partie avec cette option
dsactive (si vous devez faire cela, vous utiliserez plutt deux
commandes find, une avec l'option et l'autre sans).
-maxdepth n
Descendre au plus n niveaux de profondeur des rpertoires (n
tant un entier positif ou nul), dans les paramtres fournis sur
la ligne de commande. -maxdepth 0 signifie que les tests et les
actions ne s'appliquent qu'aux paramtres de la ligne de com-
mande.
-mindepth n
Ne pas appliquer les tests ou les actions des niveaux de pro-
fondeur infrieurs n. n est un entier positif ou nul. -mindepth
1 signifie que les tests et les actions s'appliquent tous les
fichiers sauf aux paramtres de la ligne de commande.
-mount Ne pas parcourir les rpertoires situs sur d'autres systmes de
fichiers. Il s'agit d'une alternative l'option -xdev, assurant
la compatibilit avec d'anciennes versions de find.
-noignore_readdir_race
Dsactiver l'effet de -ignore_readdir_race.
-noleaf
Ne pas optimiser, en ignorant que les rpertoires sont supposs
contenir deux sous-rpertoires de moins que leur nombre de liens
physiques. Cette option est ncessaire lorsque l'on parcourt des
systmes de fichiers ne suivant pas les conventions Unix concer-
nant les liens de rpertoires, comme les systmes MS-DOS, les
CD-ROM ou les points de montage de volumes AFS. Chaque rpertoire
sur un systme de fichiers Unix dispose d'au moins deux liens
physiques, son nom et . . De plus, chaque sous-rpertoire a
galement un lien .. vers le rpertoire parent (s'il existe).
Quand find examine un rpertoire, il sait qu'il y a deux
sous-rpertoires de moins que de liens vers le rpertoire. Une
fois qu'il a rencontr le nombre prvu de sous-rpertoires, il est
donc sr que le reste des entres est constitu de fichiers autres
que des sous-rpertoires. Ces fichiers sont des feuilles ([NDT]
leaf ) dans l'arborescence des rpertoires. S'il n'y a que les
noms de fichiers examiner, il n'a plus besoin de vrifier leur
nature, ce qui entrane une augmentation notable de la vitesse de
traitement.
-regextype type
Dfinir la syntaxe des expressions rationnelles des tests -regex
et -iregex qui seront indiqus plus loin sur la ligne de com-
mande. Les types actuellement implments sont emacs (type par
dfaut), posix-awk, posix-basic, posix-egrep et posix-extended.
-version, --version
Afficher le numro de version de find et quitter.
-warn, -nowarn
Activer ou dsactiver les messages d'avertissement. Ces messages
d'avertissement concernent l'usage de la ligne de commande, et
non les vnements que find peut rencontrer lorsqu'il explore les
rpertoires. Le comportement par dfaut est d'activer -warn si
l'entre standard est un tty, et -nowarn dans les autres cas.
-xdev Ne pas parcourir les rpertoires situs sur d'autres systmes de
fichiers.
TESTS
Quelques tests (comme -newerXYet -samefile par exemple) permettent de
comparer le fichier en cours d'examen et un fichier de rfrence indiqu
sur la ligne de commande. Quand ces tests sont utiliss, l'analyse du
fichier de rfrence est soumis aux effets des options -H, -L , -P et
tout -follow prcdent. Par contre, ce fichier de rfrence n'est consult
qu'une fois, au moment o la ligne de commande est interprte. Si ce
fichier de rfrence ne peut pas tre analys (par exemple si l'appel
systme stat(2) choue), un message d'erreur sera gnr, et la commande
find s'interrompera avec un statut diffrent de zro.
Les paramtres numriques peuvent tre indiqus comme suit :
+n suprieur n,
-n infrieur n,
n strictement gal n.
-amin n
Dernier accs au fichier il y a n minutes.
-anewer fichier
Dernier accs au fichier plus rcent que la dernire modification
de fichier. Si le fichier est un lien symbolique et que les
options -H ou -L sont actives, c'est toujours la date de dernier
accs du fichier point qui est utilise.
-atime n
Dernier accs au fichier il y a n*24 heures. Lorsque find calcule
le nombre de priodes de 24 heures depuis lequel le fichier a t
accd, la partie fractionnelle est ignore. Ainsi, pour correspon-
dre -atime +1, un fichier doit avoir t accd il y a au moins
deux jours.
-cmin n
Date de dernire modification du statut du fichier il y a n min-
utes.
-cnewer fichier
Date de dernire modification du statut du fichier plus rcente
que la date de dernire modification du fichier donn. Si le
fichier donn est un lien symbolique et que les options -H ou -L
sont actives, alors c'est la date de dernire modification du
statut du fichier point par le lien qui est considre.
-ctime n
Date de dernire modification du statut du fichier il y a n*24
heures. Consultez l'explication concernant -atime pour compren-
dre comment les effets d'arrondis altrent l'interprtation de la
date de dernire modification du statut du fichier.
-empty Fichier vide. De plus, ce fichier doit tre rgulier ou tre un
rpertoire.
-executable
Correspond aux fichiers qui sont excutables et aux rpertoires
qui sont accessibles (en ce qui concerne la rsolution d'un nom
de fichier). Les listes de contrles d'accs (ACL) et autres arte-
facts de permissions sont pris en compte, l'inverse du test
-perm qui lui les ignore. Ce test utilise l'appel systme
access(2) et peut de ce fait tre tromp par les serveurs NFS qui
font de la substitution d'identit (ou du root squashing). En
effet, de nombreux systmes implmentent access(2) au niveau du
client, et ne peuvent donc se servir des substitutions d'identit
gres du cot serveur. Puisque ce test n'est bas que sur le rsul-
tat fourni par l'appel systme access(2), il n'y a aucune
garantie qu'un fichier trouv par ce test soit rellement
excutable.
-false Toujours faux.
-fstype type
Fichier se trouvant sur un systme de fichiers du type indiqu.
Les types valides de systmes de fichiers dpendent de la version
d'Unix. Une liste non exhaustive des systmes accepts sur cer-
taines versions d'Unix sont : ufs, 4.2, 4.3, nfs, tmp, mfs,
S51K, S52K. Vous pouvez utiliser -printf avec la directive %F
pour examiner les types de vos systmes de fichiers.
-gid n Fichier de GID numrique valant n.
-group nom_groupe
Fichier appartenant au groupe nom_groupe (ventuellement un iden-
tifiant numrique).
-ilname motif
Semblable -lname, mais sans diffrencier les majuscules et les
minuscules. Si les options -L ou -follow sont actives, ce test
renvoie toujours faux, moins que le lien symbolique ne soit
cass.
-iname motif
Semblable -name, mais sans diffrencier les majuscules et les
minuscules. Par exemple les motifs to* et T??? correspondent
aux noms de fichiers Toto , TOTO , toto , tOto , etc. Dans
ces motifs, et contrairement l'expansion des noms de fichiers
de l'interprteur de commandes, un . initial peut correspondre
au motif * . Ainsi, find -name *to acceptera le fichier
.toto . Notez bien que vous devez protger les motifs, cela va
sans dire, car sinon, l'interprteur de commandes appliquera
l'expansion aux mtacaractres qu'ils contiennent.
-inum n
Fichier dont le numro d'inode est n. Il est en gnral plus facile
d'utiliser le test -samefile.
-ipath motif
Se comporter comme -iwholename. Cette option est obsolte,
veuillez ne plus l'utiliser.
-iregex motif
Semblable -regex, mais sans diffrencier les majuscules et les
minuscules.
-iwholename motif
Semblable -wholename, mais la recherche n'est pas sensible la
casse.
-links n
Fichier ayant n liens.
-lname motif
Fichier reprsentant un lien symbolique, dont le contenu corre-
spond au motif indiqu. Lors du dveloppement des mtacaractres,
/ et . ne sont pas traits diffremment des autres caractres.
Si les options -L ou -follow sont actives, ce test renvoie faux,
sauf si le lien symbolique est cass.
-mmin n
Fichier dont les donnes ont t modifies il y a n minutes.
-mtime n
Fichier dont les donnes ont t modifies il y a n*24 heures. Con-
sultez l'explication sur -atime pour comprendre comment les
arrondis affectent l'interprtation des dates de dernire modifi-
cation des fichiers.
-name motif
Fichier dont le nom de base (sans les rpertoires du chemin
d'accs), correspond au motif du shell. Les mtacaractres ( * ,
? , et [] ) peuvent correspondre un point . au dbut du nom
du fichier (c'est une volution de findutils-4.2.2, consultez la
section CONFORMIT AUX STANDARDS plus loin). Pour ignorer un
rpertoire, ainsi que tous ses fichiers, utilisez l'option -prune
(vous trouverez un exemple dans la description de l'option
-path). Les parenthses ne sont pas considres comme des caractres
spciaux, bien que certains interprteurs de commandes (dont le
Bash) attribuent aux parenthses un rle particulier. La corre-
spondance avec le nom du fichier est obtenue par l'utilisation
de la fonction fnmatch(3) de la bibliothque. N'oubliez pas de
protger votre motif entre guillemets afin d'viter l'expansion
des mtacaractres par l'interprteur de commandes.
-newer fichier
Fichier modifi plus rcemment que le fichier indiqu. Si le
fichier fichier est un lien symbolique et que les options -H ou
-L sont actives, c'est la date de modification du fichier point
qui sera considre.
-newerXY rfrence
Compare le timestamp du fichier courant avec la rfrence. L'argu-
ment rfrence est habituellement un nom de fichier (dans ce cas,
un de ses timestamps est utilis pour les comparaisons), mais il
peut aussi s'agir d'une chane donnant un temps absolu. X et Y
sont des emplacements pour d'autres lettres, lettres qui
indiquent quel horodatage de la rfrence est utilis pour la com-
paraison.
a La date et l'heure de dernier accs au fichier rfrence
B La date et l'heure de cration du fichier rfrence
c La date et l'heure de changement d'tat de l'inode rfrence
m La date et l'heure de dernire modification du fichier rfrence
t rfrence est directement interprte en tant qu'heure
Certaines combinaisons ne sont pas valables, comme par exemple,
X utilis avec t. Certaines combinaisons ne sont pas implmentes
sur certains systmes, comme par exemple B qui n'est pas supporte
par tous les systmes. Une erreur fatale sera retourne si une
combinaison non valable ou non implmente de XY est appele. Les
dates et heures sont interprtes comme les arguments de l'option
-d de la commande date du GNU. Si vous essayez d'utiliser la
date de cration d'un fichier, et que cette date de cration ne
peut pas tre dtermine, vous obtiendrez un message d'erreur
fatale. Si vous spcifiez un test qui se rfre la date de cration
des fichiers examiner, ce test chouera pour chaque fichier pour
lequel la date de cration est inconnue.
-nogroup
Fichier dont l'identifiant de groupe numrique ne correspond
aucun groupe d'utilisateurs.
-nouser
Fichier dont l'UID numrique ne correspond aucun utilisateur.
-path motif
Fichier dont le nom correspond au motif motif. Les mtacaractres
/ ou . ne sont pas interprts, d'o, par exemple,
find . -path "./sr*sc"
affichera un rsultat pour un rpertoire appel ./src/misc (s'il
existe). Pour omettre une branche complte de rpertoires,
utilisez -prune plutt que de vrifier chaque fichier de
l'arborescence. Pour ignorer par exemple le rpertoire
src/emacs et tous ces fichiers et sous-rpertoires tout en
affichant le nom des autres fichiers trouvs, faites quelque
chose comme :
find . -path './src/emacs' -prune -o -print
Sachez que le motif de recherche de correspondance s'applique
sur le nom complet du fichier, en commenant des points de dpart
indiqus sur la ligne de commande. L'utilisation d'un chemin
absolu n'a de sens ici que si le point de dpart de recherche est
lui aussi un chemin absolu. Cela signifie que la commande suiv-
ante ne trouvera jamais rien :
find bar -path /truc/bidule/monFichier -print
Le prdicat -path est aussi implment dans le find d'HP-UX et
apparatra dans une prochaine version du standard POSIX.
-perm mode
Fichier dont les autorisations d'accs sont fixes exactement au
mode indiqu (en notation symbolique ou octale). Puisqu'une cor-
respondance stricte est requise, vous risquez d'tre obligs
d'utiliser une chane de caractres plutt complique lorsque vous
utiliserez cette option avec le mode symbolique. -perm g=w, par
exemple, ne recherchera que les fichiers qui ont le mode 0020
(c'est dire, ceux pour lesquels la permission d'criture pour le
groupe est la seule permission dfinie). Vous voudrez plus cer-
tainement utiliser les formes / ou - , telles que -perm -g=w,
qui correspondent tous les fichiers qui ont le droit d'criture
pour les groupes. Consultez la section EXEMPLES pour des exem-
ples plus significatifs.
-perm -mode
Fichier ayant tous les bits d'autorisations indiqus dans le
mode. Les notations symboliques sont acceptes dans ce cas, et
c'est en gnral comme cela que l'on veut s'en servir. Vous devez
indiquer u , g ou o si vous utilisez un mode symbolique.
Consultez la section EXEMPLES pour des exemples plus significat-
ifs.
-perm /mode
Fichier ayant certains des bits d'autorisations indiqus dans le
mode. La notation symbolique est accepte dans ce cas. Vous devez
indiquer u , g ou o si vous utilisez un mode symbolique.
Consultez la section EXEMPLES pour des exemples plus significat-
ifs. Si aucun bit d'autorisation n'est indiqu dans mode, aucune
correspondance ne sera trouve. Toutefois, cela correspondra
bientt tous les fichiers (l'objectif est d'tre plus cohrent
avec le comportement de perm -000).
-perm +mode
Dconseill, ancienne mthode pour rechercher des fichiers ayant
certains des bits d'autorisations indiqus dans le mode. Vous
devez plutt utiliser -perm /mode. L'utilisation de la syntaxe
+ avec la notation symbolique vous rservera des rsultats sur-
prenants. Par exemple, +u+x est une notation symbolique valide
(quivalente +u,+x, c'est--dire 0111) qui ne sera donc pas value
en tant que -perm +mode, mais plutt comme l'option de recherche
exacte -perm mode. Cela correspondra donc aux fichiers avec la
permission 0111 prcisment, et non ceux qui ont n'importe quel
bit d'excution activ. Si vous ne trouvez pas ce paragraphe
clair, vous n'tes pas le seul. Utilisez plutt -perm /mode. Cet
emploi du test -perm est dconseill parce que la spcification
POSIX requiert l'interprtation du premier + en tant que partie
de la notation symbolique. Nous avons donc prfr l'utilisation de
/ .
-readable
Correspond aux fichiers qui sont accessibles en lecture. Les
listes de contrle d'accs (ACL) et les autres artefacts de per-
missions sont pris en compte, l'inverse du test -perm qui, lui,
les ignore. Ce test utilise l'appel systme access(2), et peut,
de ce fait, tre tromp par les serveurs NFS qui font de la sub-
stitution d'identit (UID mapping ou root squashing). En effet,
de nombreux systmes implmentent access(2) au niveau du client,
et ne peuvent donc se servir des substitutions d'identits gres
du cot serveur.
-regex motif
Nom de fichier correspondant l'expression rationnelle motif. Il
s'agit d'une correspondance sur le chemin complet, pas d'une
recherche. Par exemple, pour mettre en correspondance un fichier
nomm ./fubar3 , vous pouvez utiliser les expressions
rationnelles .*bar. ou .*b.*3 , mais pas f.*r3 . Les expres-
sions rationnelles comprises par find sont, par dfaut, celles
d'Emacs. L'option -regextype permet d'en changer.
-samefile nom
Fichier qui se rfre la mme inode que nom. Quand -L est actif,
cela inclut les liens symboliques.
-size n[cwbkMG]
Fichier utilisant n units d'espace. On pourra utiliser les suf-
fixes suivants :
b Pour des blocs de 512 octets (comportement par dfaut si
rien n'est indiqu).
c Pour indiquer des octets.
w Pour des mots de deux octets.
k Pour des kilo-octets (units de 1 024 octets).
M Pour des mga-octets (units de 1 048 576 octets).
G Pour des giga-octets (units de 1 073 741 824 octets).
La taille ne prend pas en compte les blocs indirects, mais elle
comptabilise les blocs des fichiers creux non encore allous.
Gardez l'esprit que les spcifications de format %k et %b de
-printf grent diffremment les fichiers parpills. Le suffixe b
dtermine toujours des blocs de 512 octets et jamais de 1
kilo-octets, ce qui diffre du comportement de -ls.
-true Toujours vrai.
-type c
Fichier du type c :
b Fichier spcial en mode bloc (avec tampon)
c Fichier spcial en mode caractre (sans tampon)
d Rpertoire
p Tube nomm (FIFO)
f Fichier rgulier
l Lien symbolique, n'est jamais vrai si les options -L ou
-follow sont actives, moins que le lien symbolique ne
soit cass. Si vous voulez rechercher des liens symbol-
iques alors que -L est actif, utilisez -xtype.
s Socket
D Door (Solaris)
-uid n Fichier dont l'identifiant utilisateur numrique vaut n.
-used n
Fichier dont le dernier accs date de n jours aprs sa date de
dernire modification.
-user utilisateur
Fichier appartenant l'utilisateur indiqu (identifiant utilisa-
teur numrique ventuellement).
-wholename motif
Voir -path. Cette option est moins portable que -path.
-writable
Correspond aux fichiers qui sont accessibles en criture. Les
listes de contrle d'accs (ACL) et les autres artefacts de per-
missions sont pris en compte, l'inverse du test -perm qui, lui,
les ignore. Ce test utilise l'appel systme access(2), et peut,
de ce fait, tre tromp par les serveurs NFS qui font de la sub-
stitution d'identit (UID mapping ou root squashing). En effet,
de nombreux systmes implmentent access(2) au niveau du client,
et ne peuvent donc se servir des substitutions d'identits gres
du cot serveur.
-xtype c
Semblable -type sauf si le fichier est un lien symbolique. Pour
les liens symboliques, si les options -H ou -P ont t spcifies,
le test est vrai si le fichier point par le lien est de type c ;
si l'option -L a t spcifie, le test est vrai si c vaut l .
Autrement dit, pour les liens symboliques, -xtype vrifie le type
des fichiers que l'option -type ne vrifie pas.
ACTIONS
-delete
Effacer les fichiers, et renvoyer vrai si l'effacement a russi.
Si l'effacement choue, un message d'erreur est envoy. Si -delete
choue, le statut de sortie de find sera diffrent de zro (si
jamais il s'interrompt). L'utilisation de l'action -delete
active automatiquement l'option -depth.
Attention : N'oubliez pas que la ligne de commande de find est
value comme une expression. crire -delete en premier forcera
find essayer d'effacer tout ce qui se trouve dans les points de
dpart que vous avez indiqu. Lorsque vous testez une ligne de
commande de find qui utilisera -delete, vous devriez prciser
l'option -depth afin d'viter les surprises plus tard. Puisque
-delete entrane -depth, vous ne pouvez pas utiliser en mme temps
-prune et -delete.
-exec commande ;
Excuter la commande ; vrai si le code de retour 0 est renvoy.
Tous les paramtres qui suivent find sont considrs comme des
paramtres pour la ligne de commande, jusqu' la rencontre d'un
caractre ; . La chane {} est remplace par le nom du fichier en
cours de traitement, ceci dans toutes ses occurrences sur la
ligne de commande, et pas seulement aux endroits o elle est
isole, comme c'est le cas avec d'autres versions de find. Ces
deux chanes peuvent avoir besoin d'tre protges du dveloppement
de la ligne de commande par le shell, en utilisant le caractre
d'chappement ( \ ) ou une protection par des guillemets. Consul-
tez la section EXEMPLES pour des exemples d'utilisation de
l'option -exec. La commande indique est excute chaque fois
qu'un fichier correspond. La commande est excute depuis le rper-
toire de dpart. Il existe d'invitables problmes de scurit asso-
cis l'usage de l'option -exec, c'est pourquoi vous devriez
utiliser l'option -execdir
la place.
-exec commande {} +
Cette variante de l'option -exec excute la commande spcifie sur
le fichier slectionn, mais en ajoutant le nom de chaque fichier
trouv la fin de la ligne de commande. Le nombre total d'invoca-
tion de la commande sera donc trs infrieur au nombre de fichiers
trouvs. La ligne de commande est construite la manire de xargs.
Une seule instance de {} est permise l'intrieur de la com-
mande. La commande sera excute dans le rpertoire de dpart.
-execdir commande ;
-execdir commande {} +
Semblable -exec, sauf que la commande indique sera excute par-
tir du sous-rpertoire contenant le fichier correspondant, qui
n'est normalement pas celui partir duquel vous avez lanc find.
C'est une mthode bien plus fiable d'invocation de commande,
puisqu'elle vite des conflits de rsolution de chemins des
fichiers trouvs. Comme pour l'option -exec, la forme de -execdir
avec + construira une ligne de commande de telle sorte qu'elle
pourra traiter plusieurs fichiers trouvs en une passe (avec une
restriction, chaque invocation de commande ne portera que sur
une liste de fichiers issue d'un seul et mme rpertoire). Si vous
utilisez cette option, veillez bien ce que votre variable
d'environnement $PATH ne contienne pas une rfrence au rpertoire
courant . , sinon un pirate pourrait lancer toutes les comman-
des qu'il souhaite en mettant un fichier au nom adquat dans les
rpertoires o vous allez lancer un -execdir. De la mme manire,
vitez les rfrences vides ou les noms de rpertoires exprims en
relatif dans $PATH.
-fls fichier
Vrai ; semblable -ls, mais crire dans le fichier comme le fait
-fprint. Le fichier en sortie est toujours cr, mme si le prdicat
n'est jamais vrifi. Consultez la section NOMS DE FICHIERS PEU
COURANTS pour obtenir des informations sur la gestion des carac-
tres inhabituels dans les noms de fichier.
-fprint fichier
Vrai ; crire le nom complet dans le fichier. Si fichier n'existe
pas au dmarrage de find, il est cr. S'il existe, il est cras.
Les noms de fichier /dev/stdout et /dev/stderr sont traits
de manire particulire, ils correspondent respectivement la sor-
tie standard et la sortie d'erreurs. Le fichier de sortie est
toujours cre, mme si le prdicat n'est jamais vrifi. Consultez la
section NOMS DE FICHIERS PEU COURANTS pour obtenir des informa-
tions sur la gestion des caractres inhabituels dans les noms de
fichiers.
-fprint0 fichier
Vrai ; semblable -print0 mais crire dans le fichier comme le
fait -fprint. Le fichier de sortie est toujours cr, mme si le
prdicat n'est jamais vrifi. Consultez la section NOMS DE
FICHIERS PEU COURANTS pour obtenir des informations sur la ges-
tion des caractres inhabituels dans les noms de fichiers.
-fprintf fichier format
Vrai ; semblable -printf mais crire dans le fichier comme le
fait -fprint. Le fichier de sortie est toujours cr, mme si le
prdicat n'est jamais vrifi. Consultez la section NOMS DE
FICHIERS PEU COURANTS pour obtenir des informations sur la ges-
tion des caractres inhabituels dans les noms de fichiers.
-ls Vrai, afficher le nom du fichier en cours dans le format ls
-dils sur la sortie standard. La taille est calcule en blocs de
1 Ko, moins que la variable d'environnement POSIXLY_CORRECT ne
soit positionne, auquel cas la taille est calcule en blocs de
512 octets. Consultez la section NOMS DE FICHIERS PEU COURANTS
pour obtenir des informations sur la gestion des caractres
inhabituels dans les noms de fichier.
-ok commande ;
Comme -exec mais interroger d'abord l'utilisateur (en utilisant
l'entre standard). Si la rponse ne commence pas par y ou Y ,
la commande n'est pas excute, et le test devient faux. Si la
commande est lance, son entre standard est redirige depuis
/dev/null.
-okdir commande ;
Comme -execdir mais interroge d'abord l'utilisateur (en util-
isant l'entre standard). Si la rponse ne commence pas par y ou
Y , la commande n'est pas excute, et le test devient faux. Si
la commande est lance, son entre standard est redirige depuis
/dev/null.
-print Vrai ; afficher le nom complet du fichier sur la sortie stan-
dard, suivi d'un saut de ligne. Si vous redirigez la sortie
standard de find vers un autre programme et qu'il y a la moindre
chance qu'un des noms des fichiers que vous recherchez contienne
un saut de ligne, alors vous devriez trs srieusement opter pour
l'option -print0 plutt que -print. Consultez la section NOMS DE
FICHIERS PEU COURANTS pour obtenir des informations sur la ges-
tion des caractres inhabituels dans les noms de fichier.
-print0
Vrai ; afficher le nom complet du fichier sur la sortie stan-
dard, suivi d'un caractre nul ( la place du caractre saut de
ligne que -print utilise). Ceci permet aux fichiers dont le nom
contient un saut de ligne ou d'autres types de caractres non
affichables, d'tre correctement interprts par les programmes
utilisant les donnes en sortie de find. Cette option correspond
l'option -0 de xargs.
-printf format
Vrai ; afficher le format indiqu sur la sortie standard, en
interprtant les squences d'chappement \ et les directives %.
La largeur et la prcision des champs peuvent tre spcifis comme
dans la fonction printf du langage C. Notez bien que la plu-
part des champs sont affichs selon %s plutt que %d, ce qui veut
dire que les drapeaux ne fonctionneront peut-tre pas comme vous
vous y attendiez. Cela veut aussi dire que le drapeau - fonc-
tionnera (il force l'alignement des champs gauche). Contraire-
ment -print, -printf n'ajoute pas de saut de ligne
la fin de la chane. Les squences d'chappement et les directives
sont les suivantes :
\a Sonnerie.
\b Effacement arrire (Backspace).
\c Arrter immdiatement l'impression du format et vider le
flux de sortie.
\f Saut de page.
\n Saut de ligne.
\r Retour chariot.
\t Tabulation horizontale.
\v Tabulation verticale.
\ Caractre ASCII NUL.
\\ Un caractre \ littral.
\NNN Le caractre ASCII dont le code est NNN (en octal).
Un \ suivi de n'importe quel autre caractre est trait comme un
caractre ordinaire ; ils sont donc affichs tous les deux.
%% Un caractre pourcentage littral (%).
%a Date du dernier accs au fichier, dans le format renvoy
par la fonction C ctime(3).
%Ak Date du dernier accs au fichier, dans le format spcifi
par k, qui doit tre soit un @ , soit une directive pour
la fonction C strftime. Les valeurs possibles de k sont
indiques ci-dessous, certaines d'entre-elles ne sont pas
disponibles sur tous les systmes, cause des diffrences
entre les fonctions strftime existantes.
@ Secondes coules depuis le 1er janvier 1970
00 h 00 GMT, avec une partie dcimale.
Champs horaires :
H Heure (00..23)
I Heure (01..12)
k Heure (0..23)
l Heure (1..12)
M Minute (00..59)
p AM ou PM, avec la dsignation locale
r Heure au format 12 heures (hh:mm:ss [AP]M)
S Seconde (00.00 .. 61.00). Accepte une partie dci-
male.
T Heure au format 24 heures (hh:mm:ss)
+ La date et l'heure, spares par un + ,
2004-04-28+22:22:05 par exemple. Ceci est une
extension GNU. L'heure est donne dans la zone
horaire courante (qui peut tre modifie via la
variable d'environnement TZ). Le second champ
contient une partie dcimale.
X Reprsentation locale de l'heure (H:M:S)
Z Fuseau horaire (par exemple MET), ou rien si le
fuseau horaire est indtermin.
Champs de date :
a Abrviation locale du jour de la semaine
(lun..dim)
A Nom local entier du jour de la semaine, de
longueur variable (lundi..dimanche)
b Abrviation locale du mois (jan..dc)
B Nom local entier du mois, de longueur variable
(janvier..dcembre)
c Date et heure locale (Sat Nov 04 12:02:33 EST
1989). Le format utilis est le mme que pour
ctime(3), et, afin de prserver la compatibilit
avec ce format, il n'y a pas de partie dcimale
pour les secondes.
d Quantime du mois (01..31)
D Date (mm/jj/aa)
h Identique b
j Jour de l'anne (001..366)
m Mois (01..12)
U Numro de la semaine dans l'anne, les semaines
commenant le dimanche (00..53)
w Jour de la semaine (0..6)
W Numro de la semaine dans l'anne, les semaines
commenant le lundi (00..53)
x Reprsentation locale de la date (mm/jj/aa)
y Les deux derniers chiffres de l'anne (00..99)
Y Anne (1970...)
%b Taille de l'espace disque consomm par le fichier, en nom-
bre de blocs de 512 octets. Puisque l'espace disque est
allou par multiple de la taille d'un bloc du systme de
fichiers, on obtient souvent un rsultat suprieur %s/512.
Il peut aussi tre infrieur si le fichier est creux
(sparse file).
%c Date de dernire modification du statut du fichier, dans
le format renvoy par la fonction C ctime .
%Ck Date de dernire modification du statut du fichier, dans
le format spcifi par k, comme pour la directive %A.
%d Profondeur du fichier dans l'arborescence des rpertoires,
0 signifiant que le fichier est un paramtre de la ligne
de commande.
%D Le numro du priphrique sur lequel le fichier est rang (la
valeur du champ st_dev field de la structure stat) exprim
en dcimal.
%f Nom du fichier, sans aucun nom de rpertoire (dernier
lment uniquement).
%F Type de systme de fichiers sur lequel se trouve le
fichier. Cette valeur peut tre utilise pour l'option
-fstype.
%g Nom du groupe propritaire du fichier, ou identifiant de
groupe numrique si le groupe n'a pas de nom.
%G Identifiant de groupe numrique du fichier.
%h Rpertoires en tte du nom de fichier (tout sauf la dernire
partie). Si le nom du fichier ne contient aucune barre
oblique (NDT : slash) (donc si c'est un fichier du rper-
toire courant), alors l'option %h rajoutera ..
%H Paramtre de la ligne de commande partir duquel le
fichier a t trouv.
%i Numro d'inode du fichier (en dcimal).
%k Taille du fichier, en nombre de blocs de 1 kilo-octet.
Puisque l'espace disque est allou par multiple de la
taille d'un bloc du systme de fichiers, on obtient sou-
vent un rsultat suprieur %s/1024. Il peut aussi tre
infrieur si le fichier est parpill.
%l Destination du lien symbolique (vide si le fichier n'est
pas un lien symbolique).
%m Bits d'autorisation d'accs au fichier (en octal). Cette
option utilise les nombres traditionnellement utiliss
dans la plupart des implmentations d'Unix, mais si votre
systme utilise un ordre inhabituel de la forme octale des
bits de permissions, alors vous observerez une diffrence
entre la valeur relle des modes du fichiers et la sortie
de %m. On veut habituellement un zro en dbut de ce nom-
bre, et pour l'obtenir, vous pouvez utiliser le drapeau #
( %#m , par exemple).
%M Les permissions du fichier (sous forme symbolique, comme
dans ls). Cette directive n'est disponible que dans les
versions de findutils 4.2.5 et suivantes.
%n Nombre de liens physiques sur le fichier.
%p Nom du fichier.
%P Nom du fichier, en retirant le nom du paramtre de ligne
de commande partir duquel le fichier a t trouv.
%s Taille du fichier en octets.
%S Densit du fichier, calcule par la formule (TAILLE-
BLOC*nb_bloc/taille_fichier). La valeur obtenue pour un
fichier rgulier d'une certaine taille dpend du systme
d'exploitation. Toutefois, la valeur normalement attendue
pour un fichier creux (sparse file) est infrieure 1.0,
tandis qu'un fichier qui utilise l'indirection de blocs
pourra obtenir une valeur suprieure 1.0. La valeur de
TAILLEBLOC est dpendante du systme, mais est souvent de
512 octets. Si le fichier a une taille nulle, la valeur
affiche est indfinie. Sur les systmes qui n'offre pas la
gestion des nombres de blocs, la valeur de la densit du
fichier sera de 1.0.
%t Date de dernire modification du fichier, dans le format
renvoy par la fonction C ctime .
%Tk Date de dernire modification du fichier, dans le format
spcifi par k, comme pour la directive %A.
%u Nom du propritaire du fichier, ou identifiant utilisateur
numrique si l'utilisateur n'a pas de nom.
%U Identifiant utilisateur numrique du propritaire du
fichier.
%y Type du fichier (comme dans ls -l), U pour type inconnu
(ce qui ne devrait pas arriver).
%Y Type du fichier (comme pour %y), suivi, pour les liens
symbolique, de : L=boucle, N=inexistant.
Un caractre % suivi de n'importe quel autre caractre est sup-
prim, mais le second caractre est affich (ne soyez pas trop con-
fiant cependant, car de nouveaux caractres de format pourront
tre un jour utiliss). Un % la fin de l'argument de format peut
engendrer un comportement alatoire puisqu'il n'y a aucun carac-
tre suivant. Ce qui peut tre plus ou moins grave suivant les
cas.
Les options %m et %d grent les drapeaux #, 0 et +, l'inverse
des autres directives, mme si elles affichent des nombres. Les
autres directives numriques qui ne grent pas ces drapeaux sont
G, U, b, D, k et n. Le drapeau de format - est gr, et trans-
forme l'alignement des champs (qui sont par dfaut aligns
droite) en alignement
gauche.
Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir
des informations sur la gestion des caractres inhabituels dans
les noms de fichier.
-prune Vrai ; Si le fichier est un rpertoire, ne pas le parcourir. Si
l'option -depth est utilise : faux, aucun effet. Puisque -delete
entrane -depth, vous ne pouvez pas utiliser conjointement -prune
et -delete.
-quit Arrter immdiatement. Tous les processus fils seront arrts, et
plus aucun des chemins indiqus sur la ligne de commande ne sera
trait. find /tmp/toto /tmp/titi -print -quit n'affichera que
/tmp/toto, par exemple. Toute ligne de commande construite par
-execdir ... {} + sera excute avant l'arrt de find. La valeur de
retour sera ou ne sera pas zro, selon qu'une erreur ait eu lieu
prcdemment ou non.
NOMS DE FICHIERS PEU COURANTS
Beaucoup d'actions de find finissent par afficher des donnes qui sont
sous le contrle d'autres utilisateurs. Cela est vrai pour les noms de
fichiers, les tailles, les dates de modification et ainsi de suite. Les
noms de fichiers posent des problmes potentiels puisqu'ils peuvent con-
tenir n'importe quel caractre, l'exception de \0 et / . Les carac-
tres inhabituels dans les noms de fichier peuvent produire des rsultats
inattendus et souvent indsirables sur votre terminal (modifier les dfi-
nitions des touches de fonctions de certains terminaux, par exemple).
Les caractres inhabituels sont grs de diffrentes faons selon les
actions, selon la description ci-dessous.
-print0, -fprint0
Affiche toujours exactement le nom de fichier non modifi, mme si
la sortie est un terminal.
-ls, -fls
Tout caractre inhabituel est toujours protg. Les espaces, les
barres obliques inverses et les guillemets sont affichs selon
les conventions des chappements du C ( \f , \" , par exemple).
Tous les autres caractres inhabituels sont affichs en octal.
Tous les autres caractres affichables (en ce qui concerne -ls et
-fls, il s'agit des caractres dont le code octal est compris
entre 041 et 0176) sont affichs en l'tat.
-printf, -fprintf
Si la sortie n'est pas un terminal, les caractres sont affichs
en l'tat. Sinon, le rsultat dpend de la directive en cours
d'utilisation. Les directives %D, %F, %g, %G, %H, %Y et %y sont
transformes en valeurs non contrles par les propritaires des
fichiers, et donc imprimes telles quelles. Les directives %a,
%b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u et %U donnent des
valeurs qui sont sous le contrle des propritaires des fichiers,
mais qui ne peuvent pas tre utilises pour envoyer des donnes
arbitraires au terminal, elles sont donc imprimes telles
quelles. Les directives %f, %h, %l, %p et %P sont protges par
des guillemets. Cette protection est applique la manire du ls
du GNU. Il ne s'agit pas du mme mcanisme de protection que celui
utilis pour -ls et -fls. Si vous pouvez choisir le format
utiliser pour la sortie de find, sachez qu'il vaut mieux
utiliser \0 plutt que nouvelle ligne en tant que terminaison,
car les noms de fichiers peuvent contenir des caractres espaces
ou nouvelle ligne.
-print, -fprint
Les guillemets sont grs la manire de -printf et -fprintf. Si
vous utilisez find dans un script ou dans un cas de figure par-
ticulier dans lesquels les fichiers correspondants peuvent avoir
des noms arbitraires, l'utilisation de -print0 devrait tre prfre
-print.
Les actions -ok et -okdir affichent le nom du fichier trait tel qu'il
est. Cela pourrait changer dans une version ultrieure.
OPRATEURS
Dans l'ordre de priorit dcroissante :
( expr )
Forcer la prcdence. Comme les parenthses risquent d'tre inter-
prtes par le shell, vous devriez normalement les protger. De
nombreux exemples de cette page de manuel utilise l'antislash
dans ce but, par exemple \(...\) au lieu de (...) .
! expr Vrai si expr est faux. Ce caractre doit habituellement tre protg
pour viter d'tre interprt par le shell.
-not expr
Identique ! expr, mais non conforme la norme POSIX.
expr1 expr2
Deux expressions sur la mme ligne sont implicitement relies par
un ET ; expr2 n'est pas value si expr1 est fausse.
expr1 -a expr2
Identique expr1 expr2.
expr1 -and expr2
Identique expr1 expr2, mais non conforme la norme POSIX.
expr1 -o expr2
OU ; expr2 n'est pas value si expr1 est vraie.
expr1 -or expr2
Identique expr1 -o expr2, mais non conforme la norme POSIX.
expr1 , expr2
Lister ; expr1 et expr2 sont toujours values. La valeur de expr1
est annule, la valeur de la liste est la valeur de expr2. Le
sparateur virgule est pratique pour rechercher diffrents types
de choses tout en ne traversant qu'une fois l'arborescence du
systme de fichiers. L'action -fprintf peut tre utilise pour
rcuprer une liste d'lments varis pour les ranger dans diffrents
fichiers en sortie.
Dfinissez la variable d'environnement POSIXLY_CORRECT pour une compati-
bilit au plus proche du standard POSIX. Les options suivantes sont
dfinies dans le standard POSIX (IEEE Std 1003.1, dition 2003) :
-H Cette option est gre.
-L Cette option est gre.
-name Cette option est gre, mais la conformit POSIX dpend de la con-
formit POSIX de la fonction fnmatch(3) de la bibliothque du
systme. l'heure de findutils-4.2.2, les mtacaractres du shell
( * , ? ou [] par exemple) trouveront les fichiers commenant
par . (l'interprtation d'IEEE PASC 126 l'impose). Ceci diffre
des versions prcdentes de findutils.
-type Gre. POSIX dfinit b , c , d , l , p , f et s . Le find
du GNU gre aussi D , ce qui reprsente une Porte, pour les
systmes d'exploitation qui en fournissent.
-ok Gre. L'interprtation de la rponse n'est pas dpendant du systme
de locales (consultez VARIABLES D'ENVIRONNEMENT).
-newer Gre. Si le fichier spcifi est un lien symbolique, il est tou-
jours drfrenc. Ceci est diffrent du comportement prcdent, qui
prenait en compte les valeurs de temps du lien symbolique (con-
sultez la section HISTORIQUE plus loin).
-perm Gre. Si la variable d'environnement POSIXLY_CORRECT n'est pas
dfinie, quelques arguments de mode d'accs (par exemple +a+x),
bien que non valables en POSIX, sont grs par souci de compati-
bilit.
Autres prdicats
Les prdicats -atime, -ctime, -depth, -group, -links, -mtime,
-nogroup, -nouser, -perm, -print, -prune, -size, -user et -xdev
sont tous grs.
Le standard POSIX dfinit les parenthses ( , ) , la ngation ! et les
oprateurs and et or (-a, -o).
Toutes les autres options, prdicats, expressions et ainsi de suite sont
des extensions hors du standard POSIX. Beaucoup de ces extensions ne
sont de toutes faons pas l'apanage du find du GNU.
Le standard POSIX impose que find dtecte les boucles.
L'utilitaire find doit dtecter les boucles infinies, telles que
le retour dans un rpertoire dj visit, alors qu'on revient du
dernier fichier rencontr. Quand il dtecte une boucle infinie,
find doit afficher un message de diagnostic sur la sortie
d'erreur, et essayer de revenir sa position d'origine ou
s'arrter.
La commande find du GNU est conforme cette exigence. Le dcompte des
liens dans un rpertoire qui contient des liens en dur vers des rper-
toires suprieurs sera souvent infrieur celui attendu. Cela peut tre d
au fait que le find du GNU optimise l'accs en vitant de parcourir un
sous-rpertoire qui s'avre tre un lien vers un rpertoire suprieur. Bien
que find ne parcourt pas le rpertoire dans ce cas prcis, il permet
aussi d'viter l'mission d'un message d'avertissement. Cette faon de
faire peut sembler gnratrice d'erreurs, mais il est peu probable que
quiconque puisse rellement en tre gn. Si l'optimisation du parcours des
feuilles (NDT : leaf) a t dsactive avec -noleaf, cette entre du rper-
toire sera bel et bien parcourue, et le message d'avertissement mis si
ncessaire. Les liens symboliques ne peuvent pas servir crer de telles
boucles dans le systme de fichiers, par contre, si les options -L ou
-follow sont actives, alors un message d'avertissement sera mis quand
find rencontrera une boucle de liens symboliques. Comme pour les
boucles contenant des liens en dur, l'optimisation de parcours des
feuilles (NDT : leaf) signifie souvent que find sait qu'il n'a pas
appliquer stat() ou chdir() sur le lien symbolique, et donc que ce
diagnostic est souvent inutile.
L'option -d est gre pour des raisons de compatibilit avec divers
systmes BSD, mais prfrez plutt l'utilisation de l'option -depth con-
forme POSIX.
Le positionnement de la variable d'environnement POSIXLY_CORRECT ne
modifie pas le comportement des tests -regex or -iregex parce que ces
tests ne sont pas dfinis dans le standard POSIX.
LANG Fournit une valeur par dfaut pour les variables de localisation
qui ne sont pas dfinies ou nulles.
LC_ALL Si elle contient une chane de caractres non vide, remplace les
valeurs de toutes les autres variables de localisation.
LC_COLLATE
Le standard POSIX exige que cette variable modifie le comporte-
ment de la recherche de motifs l'oeuvre dans l'option -name. Le
find du GNU utilise la fonction fnmatch(3) de la bibliothque, et
donc la gestion du LC_COLLATE dpend de la bibliothque prsente
sur votre systme.
POSIX exige aussi que la variable d'environnement LC_COLLATE
modifie le comportement de l'analyse de la rponse de l'utilisa-
teur la question pose par -ok, mais ce n'est pas le cas pour le
find du GNU.
LC_CTYPE
Cette variable modifie le traitement des classes de caractres
utilises par le test -name, dans le cas o la fonction fnmatch(3)
de la bibliothque de votre systme le supporte. Cela n'a aucun
effet pour le comportement de l'expression -ok.
LC_MESSAGES
Dtermine la locale utiliser pour les messages localiss.
NLSPATH
Dtermine l'endroit o sont rangs les catalogues de messages
localiss.
PATH Dtermine les rpertoires dans lesquels find cherchera les excuta-
bles invoqus par -exec, -execdir, -ok et -okdir.
POSIXLY_CORRECT
Dtermine la taille des blocs utiliss par -ls et -fls. Si
POSIXLY_CORRECT est dfini, les blocs sont des units de 512
octets. Sinon, il s'agit d'units de 1024 octets.
Dfinir cette variable dsactive aussi par dfaut les messages
d'avertissement (c'est--dire entrane -nowarn), puisque POSIX
impose que sauf dans le cas de l'affichage de -ok, tous les mes-
sages affichs sur stderr doivent tre des messages de diagnostics
et ne doivent tre gnrs que dans le cas d'une sortie avec un
statut diffrent de zro.
Lorsque POSIXLY_CORRECT n'est pas dfinie, -perm +zzz est gr de
la mme faon que -perm /zzz, lorsque +zzz n'est pas un mode sym-
bolique valable. Lorsque POSIXLY_CORRECT est dfinie, une telle
demande est considre comme une erreur.
TZ Modifie le fuseau horaire utilis dans le format de certaines
directives lies au temps dans -printf et -fprintf.
find /tmp -name noyau -type f -print | xargs /bin/rm -f
Chercher les fichiers qui s'appellent noyau dans le rpertoire /tmp et
ses sous-rpertoires, puis les effacer. Rappelez-vous que vous pouvez
rencontrer des problmes si des noms de fichiers comportent des retours
la ligne, des guillemets simples ou doubles, ou des espaces.
find /tmp -name noyau -type f -print0 | xargs -0 /bin/rm -f
Chercher les fichiers qui s'appellent noyau dans le rpertoire /tmp et
ses sous-rpertoires, puis les effacer, en veillant ce que les noms de
fichiers ou de rpertoires qui contiennent des retours la ligne, des
guillemets simples ou doubles ou des espaces soient correctement
traits. Le test -name est prioritaire sur le test -type afin d'viter
l'appel de stat(2) pour chacun des fichiers.
find . -type f -exec fichier '{}' \;
Excuter fichier sur chaque entre du rpertoire courant ou de ses
sous-rpertoires. Attention bien protger les accolades par des
guillemets simples afin d'empcher leur interprtation en tant que ponc-
tuation du script shell. De la mme faon, le point-virgule est protg
grce une barre oblique inverse, bien que l'apostrophe aurait aussi pu
tre utilise.
find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/grand.txt %-10s %p\n \)
Parcourir le systme de fichiers en une seule passe, stockant les
fichiers et rpertoires en setuid dans /root/suid.txt et les gros
fichiers dans /root/grand.txt.
find $HOME -mtime 0
Rechercher les fichiers de votre rpertoire personnel qui ont t modifis
lors des dernires vingt-quatre heures. Cette commande s'exprime de
cette faon parce que la recherche utilise le rsultat de la division
entire par 24 de l'heure de dernire modification (la fraction horaire
est donc perdue). Ce qui veut dire que pour correspondre -mtime 0, un
fichier doit avoir une antriorit de modification infrieure 24 heures.
find /sbin /usr/sbin -executable \! -readable -print
Rechercher les fichiers qui offrent le droit d'excution, mais qui ne
sont pas lisibles.
find . -perm 664
Rechercher les fichiers qui ont la permission de lire et d'crire pour
leur propritaire et groupe, et que les autres utilisateurs ne peuvent
que lire. Les fichiers qui satisfont ces critres, mais qui ont d'autres
bits de permissions activs (par exemple si le fichier est excutable) ne
seront pas slectionns.
find . -perm -664
Rechercher les fichiers qui ont la permission de lire et d'crire pour
leur propritaire et leur groupe, et que les autres utilisateurs peuvent
lire, sans toutefois s'intresser la prsence d'autres bits de permis-
sions (le bit d'excution par exemple). Un fichier ayant par exemple les
droits 0777 sera slectionn.
find . -perm /222
Rechercher les fichiers qui offrent le droit d'criture quelqu'un (son
propritaire, ou son groupe, ou bien encore n'importe qui).
find . -perm /220
find . -perm /u+w,g+w
find . -perm /u=w,g=w
Ces commandes font toutes les trois la mme chose, mais la premire
utilise le mode octal pour reprsenter les modes du fichier, alors que
les deux autres se servent de la forme symbolique. Ces commandes
recherchent tous les fichiers dans lesquels soit le propritaire soit le
groupe peut crire. Ces fichiers n'ont pas offrir la fois le droit
d'criture au propritaire et au groupe, l'un ou l'autre suffira.
find . -perm -220
find . -perm -g+w,u+w
Ces commandes font toutes deux la mme chose, c'est--dire rechercher les
fichiers qui offrent le droit d'criture au propritaire ainsi qu'au
groupe.
find . -perm -444 -perm /222 ! -perm /111
find . -perm -a+r -perm /a+w ! -perm /a+x
Ces commandes recherchent toutes deux les fichiers qui sont lisibles
par tous (perm -444 ou -perm -a+r), ont au moins un des bits d'criture
actif (-perm /222 ou -perm /a+w), mais qui ne sont excutables par per-
sonne (respectivement ! -perm /111 et ! -perm /a+x)
cd /source-dir
find . -name .snapshot -prune -o \( \! -name *~ -print0 \)|
cpio -pmd0 /dest-dir
Cette commande copie le contenu de /source-dir dans /dest-dir, sauf les
fichiers et rpertoires s'appelant .snapshot (et tout ce qu'ils contien-
nent). Elle ne copie pas non plus les fichiers ou rpertoires dont le
nom finit par ~, mais copie par contre leur contenu. La structure
-prune -o \( ... -print0 \) est assez connue. L'ide ici, c'est que
l'expression avant -prune indique les fichiers couper. Toutefois,
l'action -prune renvoie vrai, donc le -o qui suit n'applique l'expres-
sion sa droite que sur les rpertoires qui n'ont pas t coups (le con-
tenu des rpertoires coups n'est mme pas consult). L'expression droite
du -o est entre parenthses pour des raisons de clart uniquement.
L'accent est mis ici sur le fait que l'action -print0 ne s'excute que
pour les items qui n'ont pas t coups par -prune. Le et implicite
entre les conditions de tests est plus prioritaire que le -o, mais les
parenthses aident comprendre ce qu'il se passe ici.
find s'arrte en renvoyant la valeur de retour 0 si tous les fichiers
ont t traits avec succs, ou en renvoyant une valeur suprieure 0 si une
erreur est survenue. Cette information est volontairement trs floue.
Considrez simplement qu'en cas de valeur de retour diffrente de zro,
vous ne devez pas vous fier l'exactitude des rsultats fournis par
find.
locate(1), locatedb(5), updatedb(1), xargs(1), chmod(1), fnmatch(3),
regex(7), stat(2), lstat(2), ls(1), printf(3), strftime(3), ctime(3),
Finding Files (en ligne dans Info, ou en version imprime)
l'heure de findutils-4.2.2, les mtacaractres du shell ( * , ? ou
[] par exemple) trouveront les fichiers commenant par . parce que
l'interprtation d'IEEE POSIX 126 l'impose.
-perm /MODE remplace la syntaxe -perm +MODE, qui est dprcie depuis
findutils-4.2.21. -perm /000 correspond maintenant tous les fichiers
plutt qu' aucun, comme dans findutils-4.3.3.
La gestion des nanosecondes dans les timestamps a t implmente dans
findutils-4.3.3.
L'action -delete force find envoyer un statut de sortie non nul en cas
d'chec, comme dans findutils-4.3.11. Toutefois, find ne s'interrompra
pas immdiatement. Dans les versions prcdentes, le statut de sortie de
find n'tait pas modifi par l'chec de -delete.
Fonctionnalits Ajoutes Offertes dans
-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
$ find . -name *.c -print
find : les chemins doivent prcder l'expression
Syntaxe : find [-H] [-L] [-P] [-Oniveau] [-D help|tree|search|stat|rates|opt|exec] [CHEMIN...] [EXPRESSION]
Cette erreur survient parce que *.c a t interprt par le shell, et que
la commande find a en fait reu une ligne de commande qui ressemblait :
find . -name bigram.c code.c frcode.c locate.c -print
Cette commande ne peut bien sr en aucun cas fonctionner. Plutt que de
vous y prendre de cette faon, vous pourriez protger votre motif de
recherche par des guillemets ou protger les caractres jokers :
$ find . -name \*.c -print
Des problmes de scurit se posent, inhrent au comportement de find tel
que dfinit par le standard POSIX, et qui ne peuvent donc tre rsolus.
Par exemple, l'action -exec est dangereuse par nature, et l'usage de
-execdir est prfrable. Consultez plutt Finding Files pour plus de
dtails.
La variable d'environnement LC_COLLATE n'a aucun effet sur l'action
-ok.
La meilleure faon de signaler un bogue est d'utiliser le formulaire en
ligne sur http://savannah.gnu.org/bugs/?group=findutils. L'intrt de
cette mthode est que vous pourrez ensuite suivre l'volution de la rso-
lution du problme. Tout autre commentaire concernant find(1) et le
paquet findutils en gnral peut tre envoy la liste de diffusion
bug-findutils. Pour vous abonner cette liste, envoyez un courriel
bug-findutils-request [AT] gnu.org.
Cette page de manuel a t traduite et mise jour par Christophe Blaess
entre 1997 et 2003. La version prsente dans Debian est dornavant main-
tenue par Sylvain Cherrier <sylvain DOT cherrier AT free DOT fr> et les
membres de la liste <debian-l10n-french AT lists DOT debian DOT org>.
Veuillez signaler toute erreur de traduction par un rapport de bogue
sur le paquet manpages-fr-extra.
FIND(1)
http://www.lifeaftercoffee.com … -and-unix/