Content-type: text/html
Man page of FIND
FIND
Section: User Commands (1)
Index
Return to Main Contents
NOM
find - Rechercher des fichiers dans une hiérarchie de répertoires
SYNOPSIS
find [-H] [-L] [-P] [chemin...] [expression]
DESCRIPTION
Cette page de manuel documente la version GNU de find. GNU find
parcourt les arborescences des répertoires de chacun des chemins
mentionnés, en évaluant les expressions fournies pour chaque fichier
rencontré. L'évaluation de l'expression se fait de gauche à droite, en
suivant les règles de priorité décrites dans la section OPÉRATEURS,
jusqu'à l'obtention du résultat (par exemple la partie gauche est fausse
pour un opérateur et, vraie pour un opérateur ou), puis find
passe au nom de fichier suivant.
Si vous utilisez find dans un environnement dans lequel la sécurité est
importante (si vous l'utilisez par exemple pour faire des recherches dans
des répertoires qui sont accessibles en écriture à d'autres
utilisateurs), vous devriez lire le chapitre « Considérations de
sécurité » de la documentation de findutils. Cette documentation,
fournie par findutils, s'appelle Finding Files (en anglais). Elle
contient bien plus de détails et d'explications que cette page de manuel,
et peut donc être considérée comme une source d'informations plus utile.
OPTIONS
Les options « -H », « -L » et « -P » contrôlent le traitement
des liens symboliques. Les paramètres de la ligne de commande qui les
suivent sont considérés comme des fichiers ou des répertoires à
examiner, et ce jusqu'au premier paramètre qui commence par « - », « ( », « ) », « , », ou « ! ». Ce paramètre, et tous ceux qui
suivent, sont considérés comme décrivant ce qui doit être recherché. Si
aucun chemin n'est précisé, c'est le répertoire courant qui est
utilisé. Si aucune expression n'est donnée, c'est l'ordre « -print »
qui est utilisé (quoi qu'il en soit, vous devriez plutôt utiliser « -print0 »).
Cette page de manuel décrit les « options » contenues dans la liste
d'expressions. Ces options contrôlent le comportement de find mais sont
indiquées immédiatement après le dernier chemin. Les trois options « réelles » « -H », « -L » et « -P » doivent être saisies
avant le premier chemin, le cas échéant.
- -P
-
Ne jamais suivre les liens symboliques, ce qui est le comportement par
défaut. Quand find analyse ou affiche les informations concernant un
fichier, et que ce fichier est un lien symbolique, les informations
utilisées sont celles qui concernent le lien symbolique lui-même (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
caractéristiques du fichier vers lequel mène les liens, et non celle du
lien lui-même (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 actif pour les
utilisations ultérieures de l'option -P. Si l'option -L est active et que
find découvre un lien symbolique vers un sous-répertoire lors de ses
recherches, le sous-répertoire pointé par le lien symbolique sera
examiné.
-
Quand l'option -L est active, le prédicat -type correspondra toujours au
type du fichier pointé par le lien symbolique plutôt que celui du lien
lui-même (sauf si le lien symbolique est cassé). Les prédicats -lname et
-ilname renvoient toujours faux lors de l'utilisation de -L.
- -H
-
Ne pas suivre les liens symboliques, sauf pour le traitement des paramètres
de la ligne de commande. Quand find analyse ou affiche les informations
concernant un fichier, celles qui sont utilisées viennent des propriétés
du lien symbolique lui même (et non du fichier pointé). La seule exception
à ce comportement est lorsqu'un fichier indiqué sur la ligne de commande
est lui même un lien symbolique, et que ce lien peut être résolu. Dans ce
cas, les informations traitées sont celles du fichier pointé par le lien
(autrement dit, le lien est suivi). Les informations concernant le lien
lui-même sont utilisées 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 indiqués sur la ligne de commande est un lien symbolique
pointant vers un répertoire, le contenu de ce répertoire sera analysé
(sachant bien sûr que l'option -maxdepth 0 l'en empêcherait).
Si plus d'une option parmi -H, -L ou -P est indiquée, chacune écrase les
précédentes, et c'est la dernière qui apparaît sur la ligne de commande
qui prime sur les autres. Puisque c'est l'option par défaut, on considère
que c'est -P qui est actif, à moins que -H ou -L ne soient utilisées.
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 commencée. Ces
options modifient aussi la façon dont les paramètres sont traités. Plus
précisément, il existe un certain nombre de tests qui compare les fichiers
listés sur la ligne de commande et le fichier en cours d'analyse. Dans tous
les cas de figure, un fichier de la ligne de commande a été analysé et
certaines de ses caractéristiques ont été mémorisées. Si le fichier
indiqué est en fait un lien symbolique, et que l'option -P est active (ou
que ni -H ou -L n'ont été précisées), alors l'information qui sera
utilisée pour les comparaisons sera extraite des propriétés du lien
symbolique. Sinon, elle sera extraite des propriétés du fichier pointé
par le lien. Si find ne peut suivre le lien (soit parce ce qu'il ne
dispose pas des privilèges suffisants, soit parce que le lien pointe vers
un fichier inexistant), alors ce sont les propriétés du lien lui-même qui
seront utilisées.
Quand les options -H ou -L sont actives, tout lien symbolique donné comme
paramètre à -newer sera déréférencé, et le « timestamp » utilisé
sera celui du fichier pointé par le lien symbolique. Ceci s'applique de la
même façon à -anewer et -cnewer.
L'option -follow a le même effet que -L, sauf qu'elle agit à l'endroit où
elle apparaît (c'est à dire que si -L n'est pas utilisée, tout lien
symbolique qui apparaît sur la ligne de commande après -follow sera
déréférencé, et ceux apparaissant avant ne le seront pas).
EXPRESSIONS
L'expression est constituée d'options (affectant l'ensemble des
opérations plutôt 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 éléments étant séparés par des opérateurs. Quand un
opérateur est manquant, l'opération par défaut -and est appliquée.
Si l'expression ne contient pas d'action autre que -prune, find applique
l'action -print par défaut à tous les fichiers pour lesquels l'expression
est vraie.
OPTIONS
Toutes les options renvoient toujours la valeur vraie. Excepté pour -follow
et -daystart, elles ont toujours un effet global, plutôt que de s'appliquer
uniquement à leur emplacement dans l'expression. De ce fait, pour
améliorer la lisibilité, il est préférable de les placer au début de
l'expression. Vous recevrez un avertissement dans les autres cas.
- -daystart
-
Mesurer les temps (avec -amin, -atime, -cmin, -ctime, -mmin, et -mtime)
depuis le début de la journée plutôt que depuis 24 heures. Cette option
n'affecte que les tests qui sont indiqués plus loin sur la ligne de
commande.
- -depth
-
Traiter d'abord les sous-répertoires avant le répertoire lui-même.
- -d
-
Un synonyme de -depth, dans un but de compatibilité avec FreeBSD, NetBSD,
MacOS X et OpenBSD.
- -follow
-
Obsolète, utilisez plutôt l'option -L à la place. Déréférence les
liens symboliques. Ceci implique l'option -noleaf. L'option -follow
n'affecte que les tests qui apparaissent après son apparition sur la ligne
de commande. Sauf dans le cas où l'option -H ou -L est indiquée, la
position de l'option -follow change le comportement du prédicat -newer, et
tout fichier donné en paramètre de -newer sera déréférencé s'il s'agit
d'un lien symbolique. La même remarque s'applique à -anewer et -cnewer. De
la même façon, le prédicat -type correspondra toujours au type du fichier
pointé par le lien symbolique plutôt que le type du lien lui-même. Les
prédicats -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 se terminer normalement.
- -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
répertoire et celui où il essaye de l'analyser, vous n'obtiendrez aucun
message d'erreur. Cela s'applique aussi aux fichiers et répertoires dont
vous avez donné les noms sur la ligne de commande. Cette option prend effet
dès le moment où la ligne de commande est lue, ce qui veut dire que vous
ne pouvez pas rechercher sur une partie du système de fichiers avec cette
commande active, et sur une autre partie avec cette commande désactivée
(si vous devez faire cela, vous utiliserez plutôt deux commandes find,
une avec l'option et l'autre sans).
- -maxdepth n
-
Descendre au plus à n niveaux de profondeur des répertoires (n
étant un entier positif ou nul), dans les paramètres fournis sur la ligne
de commande. « -maxdepth 0 » signifie que les tests et les actions ne
s'appliquent qu'aux paramètres de la ligne de commande.
- -mindepth n
-
Ne pas appliquer les tests ou les actions à des niveaux de profondeur
inférieurs à n. n est un entier positif ou nul. « -mindepth 1 »
signifie que les tests et les actions s'appliquent à tous les fichiers sauf
aux paramètres de la ligne de commande.
- -mount
-
Ne pas parcourir les répertoires situés sur d'autres systèmes de
fichiers. Il s'agit d'une alternative à l'option -xdev, assurant la
compatibilité avec d'anciennes versions de find.
- -noignore_readdir_race
-
Désactiver l'effet de -ignore_readdir_race.
- -noleaf
-
Ne pas optimiser en supposant que les répertoires contiennent deux
sous-répertoires de moins que leur nombre de liens physiques. Cette option
est nécessaire lorsque l'on parcourt des systèmes de fichiers ne suivant
pas les conventions Unix concernant les liens de répertoires, comme les
systèmes MS-DOS, les CD-ROM ou les points de montage de volumes AFS. Chaque
répertoire sur un système de fichiers Unix dispose d'au moins deux liens
physiques, son nom et « . ». De plus, chaque sous-répertoire a
également un lien « .. » vers le répertoire parent (s'il
existe). Quand find examine un répertoire, il sait qu'il y a deux
sous-répertoires de moins que de liens vers le répertoire. Une fois qu'il
a rencontré le nombre prévu de sous-répertoires, il est donc sûr que le
reste des entrées est constitué de fichiers autres que des
sous-répertoires. Ces fichiers sont des feuilles ([NDT] « leaf ») dans
l'arborescence des répertoires. S'il n'y a que les noms de fichiers à
examiner, il n'a plus besoin de vérifier leur nature, ce qui entraîne une
augmentation notable de la vitesse de traitement.
- -regextype type
-
Définir la syntaxe des expressions rationnelles des tests -regex et
-iregex qui seront indiqués plus loin sur la ligne de commande. Les
types actuellement implémentés sont emacs (type par défaut), posix-awk,
posix-basic, posix-egrep et posix-extended.
- -version, --version
-
Afficher le numéro de version de find et se terminer normalement.
- -warn, -nowarn
-
Activer ou désactiver les messages d'avertissement. Ces messages
d'avertissements concernent l'usage de la ligne de commande, et non les
événements que find peut rencontrer lorsqu'il explore les
répertoires. Le comportement par défaut est d'activer -warn si l'entrée
standard est un tty, et -nowarn dans les autres cas.
- -xdev
-
Ne pas parcourir les répertoires situés sur d'autres systèmes de
fichiers.
TESTS
Les paramètres numériques peuvent être indiqués comme suit :
- +n
-
supérieur à n,
- -n
-
inférieur à n,
- n
-
strictement égal à n.
- -amin n
-
Dernier accès au fichier il y a n minutes.
- -anewer fichier
-
Dernier accès au fichier plus récent que la dernière 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 dernière modification du fichier
pointé qui est utilisée.
- -atime n
-
Dernier accès au fichier il y a n*24 heures. Lorsque find calcule le
nombre de période de 24 heures depuis lequel le fichier a été accédé,
la partie fractionnelle est ignorée. Ainsi, pour correspondre à -atime
+1, un fichier doit avoir été accédé il y a au moins deux jours.
- -cmin n
-
Date de dernière modification du fichier il y a n minutes.
- -cnewer fichier
-
Date de dernière modification du fichier plus récente que la date de
dernière 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 dernière modification du fichier pointé par le lien qui est
considérée.
- -ctime n
-
Date de dernière modification du fichier il y a n*24 heures. Consultez
l'explication concernant -atime pour comprendre comment les effets
d'arrondis altèrent l'interprétation de la date de dernière modification
du fichier.
- -empty
-
Fichier vide. De plus, ce fichier doit être régulier ou être un
répertoire.
- -false
-
Toujours faux.
- -fstype type
-
Fichier se trouvant sur un système de fichiers du type indiqué. Les
types valides de systèmes de fichiers dépendent de la version d'Unix. Une
liste non exhaustive des systèmes acceptés sur certaines 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 systèmes de
fichiers.
- -gid n
-
Fichier de GID numérique de n.
- -group nom_groupe
-
Fichier appartenant au groupe nom_groupe (éventuellement ID numérique).
- -ilname motif
-
Identique à -lname, mais sans différencier 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
-
Identique à -name, mais sans différencier 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'interpréteur de commandes, un « . » initial peut correspondre au
motif « * ». Ainsi, find -name *to acceptera le fichier « .toto ». Notez bien que vous devez protéger les motifs, cela va sans dire, car
sinon, l'interpréteur de commandes appliquera l'expansion aux
métacaractères qu'ils contiennent.
- -inum n
-
Fichier dont le numéro d'inode est n. Il est en général plus facile
d'utiliser le test -samefile.
- -ipath motif
-
Se comporter comme -iwholename. Cette option est obsolète, veuillez ne plus
l'utiliser.
- -iregex motif
-
Identique à -regex, mais sans différencier les majuscules et les
minuscules.
- -iwholename motif
-
Identique à -wholename, mais la recherche n'est pas sensible à la casse.
- -links n
-
Fichier ayant n liens.
- -lname motif
-
Fichier représentant un lien symbolique, dont le contenu correspond au
motif indiqué. Lors du développement des métacaractères, « / » et
« . » ne sont pas traités différemment des autres caractères. Si les
options -L ou -follow sont actives, ce test renvoie faux, sauf si le lien
symbolique est cassé.
- -mmin n
-
Fichier dont les données ont été modifiées il y a n minutes.
- -mtime n
-
Fichier dont les données ont été modifiées il y a n*24
heures. Consultez l'explication sur -atime pour comprendre comment les
effets d'arrondis affectent l'interprétation des dates de dernière
modification des fichiers.
- -name motif
-
Fichier dont le nom de base (sans les répertoires du chemin d'accès),
correspond au motif du shell. Les métacaractères (« * », « ? »,
et « [] ») peuvent correspondre à un point « . » au début du nom
du fichier (c'est une évolution de findutils-4.2.2, consultez la section
CONFORMITÉ AUX STANDARDS plus loin). Pour ignorer un répertoire, ainsi que
tous ses fichiers, utilisez l'option -prune (vous trouverez un exemple dans
la description de l'option -wholename). Les parenthèses ne sont pas
considérées comme des caractères spéciaux, bien que certains
interpréteurs de commandes (dont le Bash) attribuent aux parenthèses un
rôle particulier. La correspondance avec le nom du fichier est obtenue par
l'utilisation de la fonction fnmatch(3) de la bibliothèque. N'oubliez
pas de protéger votre motif entre guillemets afin d'éviter l'expansion des
métacaractères par l'interpréteur de commandes.
- -newer fichier
-
Fichier modifié plus récemment 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 considérée.
- -nouser
-
Fichier dont l'UID numérique ne correspond à aucun utilisateur.
- -nogroup
-
Fichier dont l'identifiant de groupe numérique ne correspond à aucun
groupe d'utilisateurs.
- -path motif
-
Consultez -wholename. Le prédicat -path est aussi accepté par le find
d'HP UX.
- -perm mode
-
Fichier dont les autorisations d'accès sont fixées exactement au mode
indiqué (en notation symbolique ou octale). Puisqu'une correspondance
stricte est requise, vous risquez d'être obligé d'utiliser une chaîne de
caractères plutôt compliquée 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
définie). Vous voudrez plus certainement 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 exemples plus significatifs.
- -perm -mode
-
Fichier ayant toutes les autorisations indiquées dans le mode. Les
notations symboliques sont acceptées dans ce cas, et c'est en général
comme cela que l'on veut s'en servir. Vous devez indiquer « u », « g » ou « o » si vous utilisez un mode symbolique. Consultez la partie
EXEMPLES pour des exemples plus significatifs.
- -perm /mode
-
Fichier ayant certaines des autorisations indiquées dans le mode. La
notation symbolique est acceptée dans ce cas. Vous devez indiquer « u », « g » ou « o » si vous utilisez un mode symbolique. Consultez la
partie EXEMPLES pour des exemples plus significatifs. Si aucune
autorisation n'est indiquée dans mode, aucune correspondance ne sera
trouvée. Toutefois, cela correspondra bientôt à tous les fichiers
(l'objectif est d'être plus cohérent avec le comportement de perm
-000).
- -perm +mode
-
Déconseillé, ancienne méthode pour rechercher des fichiers ayant
certaines des autorisations indiquées dans le mode. Vous devez plutôt
utiliser -perm /mode. L'utilisation de la syntaxe « + » avec la
notation symbolique vous réservera des résultats surprenants. Par exemple,
« +x+u » est une notation symbolique valide (équivalente à +u,+x,
c.-à-d. 0111) qui ne sera donc pas évaluée en tant que -perm +mode,
mais plutôt comme l'option de recherche exacte -perm mode. Cela
correspondra donc aux fichiers avec la permission « 0111 »
précisément, et non ceux qui ont n'importe quel bit d'exécution
activé. Si vous ne trouvez pas ce paragraphe clair, vous n'êtes pas le
seul. Utilisez plutôt -perm /mode. Cet emploi du test -perm est
déconseillé parce que la spécification POSIX requiert l'interprétation
du premier + en tant que partie de la notation symbolique. Nous avons donc
préféré l'usage de « / ».
- -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 expressions rationnelles comprises
par find sont, par défaut, celles d'Emacs. L'option -regextype permet
d'en changer.
- -samefile nom
-
Fichier qui se réfère à la même inode que nom. Quand -L est actif,
cela inclut les liens symboliques.
- -size n[cwbkMG]
-
Fichier utilisant n unités d'espace. On pourra utiliser les suffixes
suivants :
-
- « b »
-
Pour des blocs de 512 octets (comportement par défaut si rien n'est
indiqué).
- « c »
-
Pour indiquer des octets.
- « w »
-
Pour des mots de deux octets.
- « k »
-
Pour des kilo-octets (unités de 1 024 octets).
- « M »
-
Pour des méga-octets (unités de 1 048 576 octets).
- « G »
-
Pour des giga-octets (unités de 1 073 741 824 octets).
-
La taille ne prend pas en compte les blocs indirects, mais elle comptabilise
les blocs des fichiers éparpillés non encore alloués. Gardez à l'esprit
que les spécifications de format « %k » et « %b » de -printf
gèrent différemment les fichiers éparpillés. Le suffixe « b »
détermine toujours des blocs de 512 octets et jamais de 1 kilo-octets, ce
qui diffère du comportement de -ls.
- -true
-
Toujours vrai.
- -type c
-
Fichier du type c :
-
- b
-
Fichier spécial en mode bloc (avec tampon)
- c
-
Fichier spécial en mode caractère (sans tampon)
- d
-
Répertoire
- p
-
Tube nommé (FIFO)
- f
-
Fichier régulier
- 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 symboliques alors que -L est actif, utilisez -xtype.
- s
-
Socket
- D
-
Door (Solaris)
- -uid n
-
Fichier dont l'identifiant utilisateur numérique vaut n.
- -used n
-
Fichier dont le dernier accès date de n jours après sa date de
dernière modification.
- -user utilisateur
-
Fichier appartenant à l'utilisateur indiqué (identifiant utilisateur
numérique éventuellement)
- -wholename motif
-
Fichier dont le nom correspond au motif motif. Les métacaractères « / » ou « . » ne sont pas interprétés, d'où, par exemple,
find . -wholename './sr*sc'
affichera un résultat pour un répertoire appelé « ./src/misc » (s'il
existe). Pour omettre une branche complète de répertoires, utilisez -prune
plutôt que de vérifier chaque fichier de l'arborescence. Pour ignorer par
exemple le répertoire « src/emacs » et tous ces fichiers et sous
répertoires tout en affichant le nom des autres fichiers trouvés, faites
quelque chose comme :
find . -wholename './src/emacs' -prune -o -print
- -xtype c
-
Identique à -type sauf si le fichier est un lien symbolique. Pour les liens
symboliques, si les options -H ou -P ont été spécifiées, le test est
vrai si le fichier pointé par le lien est de type c ; si l'option -L a
été spécifiée, le test est vrai si c vaut « l ». Autrement dit,
pour les liens symboliques, -xtype vérifie le type des fichiers que
l'option -type ne vérifie pas.
ACTIONS
- -delete
-
Effacer les fichiers, et renvoyer vrai si l'effacement a réussi. Si
l'effacement échoue, un message d'erreur est envoyé. L'appel de cette
action enclenche automatiquement l'activation de l'option « -depth ».
- -exec commande ;
-
Exécuter la commande ; vrai si le code de retour 0 est renvoyé. Tous
les paramètres qui suivent find sont considérés comme des paramètres
pour la ligne de commande, jusqu'à la rencontre d'un caractère « ; ». La chaîne « {} » est remplacée 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 isolée, comme c'est le cas avec
d'autres versions de find. Ces deux chaînes peuvent avoir besoin d'être
protégées du développement de la ligne de commande par le shell, en
utilisant le caractère d'échappement (« \ ») ou une protection par
des guillemets. Consultez la section EXEMPLES pour des exemples
d'utilisation de l'option « -exec ». La commande indiquée est
exécutée à chaque fois qu'un fichier correspond. La commande est
exécutée depuis le répertoire de départ. Il existe d'inévitables
problèmes de sécurité associés à 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 exécute la commande spécifiée sur le
fichier sélectionné, mais en ajoutant le nom de chaque fichier trouvé à
la fin de la ligne de commande. Le nombre total d'invocation de la commande
sera donc très inférieur au nombre de fichiers trouvés. La ligne de
commande est construite à la manière de xargs. Une seule instance de
« {} » est permise à l'intérieur de la commande. La commande sera
exécutée dans le répertoire de départ.
- -execdir commande ;
-
- -execdir commande {} +
-
Identique à -exec, sauf que la commande indiquée sera exécutée à partir
du sous-répertoire contenant le fichier correspondant, qui n'est
normalement pas celui à partir duquel vous avez lancé find. C'est une
méthode bien plus fiable d'invocation de commande, puisqu'elle évite des
conflits de résolution de chemins des fichiers trouvés. Comme pour
l'option -exec, la forme avec « + » construira une ligne de commande de
telle sorte qu'elle pourra traiter plusieurs fichiers trouvés en une passe
(avec une restriction, chaque invocation de command ne portera que sur
une liste de fichiers issue d'un seul et même répertoire). Si vous
utilisez cette option, veillez bien à ce que votre variable d'environnement
$PATH ne contienne pas une référence au répertoire courant, sinon un
pirate pourrait lancer toutes les commandes qu'il souhaite en mettant un
fichier au nom adéquat dans les répertoires où vous allez lancer un
-execdir.
- -fls fichier
-
Vrai ; comme -ls, mais écrire dans le fichier comme le fait -fprint. Le
fichier en sortie est toujours crée, même si le prédicat n'est jamais
vérifié. Consultez la section NOMS DE FICHIERS PEU COURANTS pour
obtenir des informations sur la gestion des caractères inhabituels dans les
noms de fichier.
- -fprint fichier
-
Vrai ; écrire le nom complet dans le fichier. Si fichier n'existe
pas au démarrage de find, il est créé. S'il existe, il est
écrasé. Les noms de fichier « /dev/stdout » et « /dev/stderr »
sont traités de manière spécifique, ils correspondent respectivement à
la sortie standard et à la sortie d'erreurs. Le fichier de sortie est
toujours crée, même si le prédicat n'est jamais vérifié. Consultez la
section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur
la gestion des caractères inhabituels dans les noms de fichier.
- -fprint0 fichier
-
Vrai ; comme -print0 mais écrire dans le fichier comme le fait
-fprint. Le fichier de sortie est toujours crée, même si le prédicat
n'est jamais vérifié. Consultez la section NOMS DE FICHIERS PEU
COURANTS pour obtenir des informations sur la gestion des caractères
inhabituels dans les noms de fichier.
- -fprintf fichier format
-
Vrai ; comme -printf mais écrire dans le fichier comme le fait
-fprint. Le fichier de sortie est toujours crée, même si le prédicat
n'est jamais vérifié. Consultez la section NOMS DE FICHIERS PEU
COURANTS pour obtenir des informations sur la gestion des caractères
inhabituels dans les noms de fichier.
- -ok commande ;
-
Comme -exec mais interroger d'abord l'utilisateur (en utilisant l'entrée
standard). Si la réponse ne commence pas par « y » ou « Y », la
commande n'est pas exécutée, et le test devient faux. Si la commande est
lancée, son entrée standard est redirigée depuis /dev/null.
- -print
-
Vrai ; afficher le nom complet du fichier sur la sortie standard, suivi
d'un saut de ligne. Si vous redirigez la sortie standard 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 très
sérieusement opter pour l'option « -print0 » plutôt que « -print ». Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des
informations sur la gestion des caractères inhabituels dans les noms de
fichier.
- -okdir commande ;
-
Comme -execdir mais interroge d'abord l'utilisateur (en utilisant l'entrée
standard). Si la réponse ne commence pas par « y » ou « Y », la
commande n'est pas exécutée, et le test devient faux. Si la commande est
lancée, son entrée standard est redirigée depuis /dev/null.
- -print0
-
Vrai ; afficher le nom complet du fichier sur la sortie standard, suivi
d'un caractère nul (à la place du caractère saut de ligne que « -print » utilise). Ceci permet aux fichiers dont le nom contient un saut de ligne
ou d'autres types de caractères non affichables, d'être correctement
interprétés par les programmes utilisant les données en sortie de
find. Cette option correspond à l'option « -0 » de xargs.
- -printf format
-
Vrai ; afficher le format indiqué sur la sortie standard, en
interprétant les séquences d'échappement « \ » et les directives « % ». La largeur et la précision des champs peuvent être spécifiés
comme dans la fonction printf du langage C. Notez bien que la plupart des
champs sont affichés selon « %s » plutôt 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 « - » fonctionnera (il
force l'alignement des champs à gauche). Contrairement à -print, -printf
n'ajoute pas de saut de ligne à la fin de la chaîne. Les séquences
d'échappement et les directives « » sont les suivantes :
-
- \a
-
Sonnerie.
- \b
-
Effacement arrière (Backspace)
- \c
-
Arrêter immédiatement 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
- \
-
Caractère ASCII NUL.
- \\
-
Un caractère « \ » littéral.
- \NNN
-
Le caractère ASCII dont le code est NNN (en octal).
Un « \ » suivi de n'importe quel autre caractère est traité comme un
caractère ordinaire ; ils sont donc affichés tous les deux.
- %%
-
Un caractère pourcentage littéral (%)
- %a
-
Date du dernier accès au fichier, dans le format renvoyé par la fonction C
ctime(3).
- %Ak
-
Date du dernier accès au fichier, dans le format spécifié par k, qui
doit être soit un « @ », soit une directive pour la fonction C « strftime ». Les valeurs possibles de k sont indiquées ci-dessous,
certaines d'entre-elles ne sont pas disponibles sur tous les systèmes, à
cause des différences entre les fonctions « strftime » existantes.
-
- @
-
Secondes écoulées depuis le 1er janvier 1970 à 00 h 00 GMT.
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 désignation locale
- r
-
Heure au format 12 heures (hh:mm:ss [AP]M)
- S
-
Secondes (00..61)
- T
-
Heure au format 24 heures (hh:mm:ss)
- +
-
La date et l'heure, séparées par un « + », « 2004-04-28+22:22:05 »
par exemple. L'heure est donnée dans la zone horaire courante (qui peut
être modifiée via la variable d'environnement TZ). Ceci est une extension
GNU.
- X
-
Représentation locale de l'heure (H:M:S)
- Z
-
Fuseau horaire (par exemple MET), ou rien si le fuseau horaire est
indéterminé.
Champs de date :
- a
-
Abréviation locale du jour de la semaine (lun..dim)
- A
-
Nom local entier du jour de la semaine, de longueur variable
(lundi..dimanche)
- b
-
Abréviation locale du mois (jan..déc)
- B
-
Nom local entier du mois, de longueur variable (janvier..décembre)
- c
-
Date et heure locales (Sam Nov 04 12:02:33 EST 1989)
- d
-
Quantième du mois (01..31)
- D
-
Date (mm/jj/aa)
- h
-
Identique à b
- j
-
Jour de l'année (001..366)
- m
-
Mois (01..12)
- U
-
Numéro de la semaine dans l'année, les semaines commençant le dimanche
(00..53)
- w
-
Jour de la semaine (0..6)
- W
-
Numéro de la semaine dans l'année, les semaines commençant le lundi
(00..53)
- x
-
Représentation locale de la date (mm/jj/aa)
- y
-
Les deux derniers chiffres de l'année (00..99)
- Y
-
Année (1970...)
- %b
-
Taille de l'espace disque consommé par le fichier, en nombre de blocs de
512 octets. Puisque l'espace disque est alloué par multiple de la taille
d'un bloc du système de fichiers, on obtient souvent un résultat
supérieur à %s/1024. Il peut aussi être inférieur si le fichier est
éparpillé.
- %c
-
Date de dernière modification du fichier, dans le format renvoyé par la
fonction C « ctime ».
- %Ck
-
Date de dernière modification du fichier, dans le format spécifié par
k, comme pour la directive %A.
- %d
-
Profondeur du fichier dans l'arborescence des répertoires, 0 signifiant que
le fichier est un paramètre de la ligne de commande.
- %D
-
Le numéro du périphérique sur lequel le fichier est rangé (la valeur du
champ st_dev field de la structure stat) exprimé en décimal.
- %f
-
Nom du fichier, sans aucun nom de répertoire (dernier élément
uniquement).
- %F
-
Type de système de fichiers sur lequel se trouve le fichier. Cette valeur
peut être utilisée pour l'option -fstype.
- %g
-
Nom du groupe propriétaire du fichier, ou identifiant de groupe numérique
si le groupe n'a pas de nom.
- %G
-
Identifiant de groupe numérique du fichier.
- %h
-
Répertoires en tête du nom de fichier (tout sauf la dernière partie). Si
le nom du fichier ne contient aucune barre oblique (NDT : slash) (donc si
c'est un fichier du répertoire courant), alors l'option %h rajoutera « . ».
- %H
-
Paramètre de la ligne de commande à partir duquel le fichier a été
trouvé.
- %i
-
Numéro d'inode du fichier (en décimal).
- %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 système de
fichiers, on obtient souvent un résultat supérieur à %s/1024. Il peut
aussi être inférieur 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'accès au fichier (en octal). Cette option utilise les
nombres « traditionnellement » utilisés dans la plupart des
implémentations d'Unix, mais si votre système utilise un ordre inhabituel
de la forme octal des bits de permissions, alors vous observerez une
différence entre la valeur réelle des valeurs du fichiers et la sortie de
%m. On veut habituellement un zéro en début de ce nombre, 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 paramètre de ligne de commande à
partir duquel le fichier a été trouvé.
- %s
-
Taille du fichier en octets.
- %t
-
Date de dernière modification du fichier, dans le format renvoyé par la
fonction C « ctime ».
- %Tk
-
Date de dernière modification du fichier, dans le format spécifié par
k, comme pour la directive %A.
- %u
-
Nom du propriétaire du fichier, ou identifiant utilisateur numérique si
l'utilisateur n'a pas de nom.
- %U
-
Identifiant utilisateur numérique du propriétaire 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 caractère « % » suivi de tout autre caractère est éliminé (mais
le second caractère est affiché).
Les options %m et %d gèrent les drapeaux # , 0 et +, à l'inverse
des autres directives, même si elles affichent des nombres. Les autres
directives numériques qui ne gèrent pas ces drapeaux sont G, U,
b, D, k et n. Le drapeau de format « - » est géré, et
transforme l'alignement des champs (qui sont par défaut alignés à droite)
en alignement à gauche.
Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des
informations sur la gestion des caractères inhabituels dans les noms de
fichier.
- -prune
-
Vrai si l'option -depth n'est pas fournie. Si le fichier fourni est un
répertoire, ne pas descendre dans son arborescence.
Faux si l'option -depth est fournie, et sans effet.
- -quit
-
Arrêter immédiatement. Tous les processus fils seront arrêtés, et plus
aucun des chemins indiqués 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
exécutée avant l'arrêt de find. La valeur de retour sera ou ne sera
pas zéro, selon qu'une erreur ait eu lieu précédemment ou non.
- -ls
-
Vrai, afficher le nom du fichier en cours dans le format « ls -dils »
sur la sortie standard. La taille est calculée en blocs de 1 Ko, à moins
que la variable d'environnement POSIXLY_CORRECT ne soit positionnée, auquel
cas la taille est calculée en blocs de 512 octets. Consultez la section
NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la
gestion des caractères inhabituels dans les noms de fichier.
NOMS DE FICHIERS PEU COURANTS
Beaucoup d'actions de find finissent par afficher des données qui sont
sous le contrôle 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 problèmes potentiels puisqu'ils peuvent contenir
n'importe quel caractère, à l'exception de « \0 » et « / ». Les
caractères inhabituels dans les noms de fichier peuvent produire des
résultats inattendus et souvent indésirables sur votre terminal (modifier
les définitions des touches de fonctions de certains terminaux, par
exemple). Les caractères inhabituels sont gérés de différentes façons
selon les actions, selon la description ci-dessous.
- -print0, -fprint0
-
Affiche toujours exactement le nom de fichier non modifié, même si la
sortie est un terminal.
- -ls, -fls
-
Tout caractère inhabituel est toujours protégé. Les espaces, les barres
obliques inverses et les guillemets sont affichés selon les conventions des
échappements du C (« \f »,« \" », par exemple). Tous les autres
caractères inhabituels sont affichés en octal. Tous les autres caractères
affichables (en ce qui concerne -ls et -fls, il s'agit des caractères dont
le code octal est compris entre 041 et 0176) sont affichés en l'état.
- -printf, -fprintf
-
Si la sortie n'est pas un terminal, les caractères sont affichés en
l'état. Sinon, le résultat dépend de la directive en cours
d'utilisation. Les directives %D, %F, %g, %G, %H, %Y, et %y sont
transformées en valeurs non contrôlées par les propriétaires des
fichiers, et donc imprimées 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
contrôle des propriétaires des fichiers, mais qui ne peuvent pas être
utilisées pour envoyer des données arbitraires au terminal, elles sont
donc imprimées telles quelles. Les directives %f, %h, %l, %p et %P sont
protégées par des guillemets. Cette protection est appliquée à la
manière du ls du GNU. Il ne s'agit pas du même mécanisme 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 » plutôt que nouvelle ligne en tant que terminaison, car les noms de
fichiers peuvent contenir des caractères espaces ou nouvelle ligne.
- -print, -fprint
-
Les guillemets sont gérées à la manière de -printf et fprintf. Si vous
utilisez find dans un script ou dans un cas de figure particulier dans
lesquels les fichiers correspondants peuvent avoir des noms arbitraires,
l'utilisation de -print0 devrait être préférée à -print.
Les actions -ok et -okdir affichent le nom du fichier traité tel qu'il
est. Cela pourrait changer dans une version ultérieure.
OPÉRATEURS
Dans l'ordre de priorité décroissante :
- ( expr )
-
Forcer la priorité.
- ! expr
-
Vrai si expr est fausse.
- -not expr
-
Identique à ! expr, mais non conforme à la norme POSIX.
- expr1 expr2
-
Deux expressions sur la même ligne sont implicitement reliées par un ET ; expr2 n'est pas évaluée 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 évaluée 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 évaluées. La valeur de
expr1 est annulée, la valeur de la liste est la valeur de expr2. Le
séparateur virgule est pratique pour rechercher différents types de choses
tout en ne traversant qu'une fois l'arborescence du système de
fichiers. L'action -fprintf peut être utilisée pour récupérer une
liste d'éléments variés pour les ranger dans différents fichiers en
sortie.
CONFORMITÉ AUX STANDARDS
Les options suivantes sont définies dans le standard POSIX (IEEE Std
1003.1, Édition 2003) :
- -H
-
Cette option est gérée.
- -L
-
Cette option est gérée.
- -name
-
Cette option est gérée, mais la conformité à POSIX dépend de la
conformité POSIX de la fonction fnmatch(3) de la bibliothèque du
système. À l'heure de findutils-4.2.2, les métacaractères du shell (« * », « ? » ou « [] » par exemple) trouveront les fichiers
commençant par « . » (l'interprétation d'IEEE PASC 126 l'impose). Ceci
diffère des versions précédentes de findutils.
- -type
-
Géré. POSIX définit « b », « c », « d », « l », « p », « f » et « s ». Le find du GNU gère aussi « D », ce qui
représente une Porte, pour les systèmes d'exploitation qui en fournissent.
- -ok
-
Géré. L'interprétation de la réponse n'est pas dépendant du système de
locales (consultez VARIABLES D'ENVIRONNEMENT).
- -newer
-
Géré. Si le fichier spécifié est un lien symbolique, il est toujours
déréférencé. Ceci est différent du comportement précédent, qui
prenait en compte les valeurs de temps du lien symbolique (consultez la
section HISTORIQUE plus loin).
- Autres prédicats
-
Les prédicats « -atime », « -ctime », « -depth », « -group », « -links », « -mtime », « -nogroup », « -nouser », « -perm », « -print », « -prune », « -size », « -user » et
« -xdev », sont tous gérés.
Le standard POSIX définit les parenthèses « ( », « ) », la
négation « ! » et les opérateurs « and » et « or » (« -a », « -o »).
Toutes les autres options, prédicats, expressions et ainsi de suite sont
des extensions hors du standard POSIX. Beaucoup de ces extensions ne sont de
toutes façons pas l'apanage du find du GNU.
Le standard POSIX impose que
-
L'utilitaire find doit détecter les boucles infinies, telles que le
retour dans un répertoire déjà visité, alors qu'on revient du dernier
fichier rencontré. Quand il détecte une boucle infinie, find doit afficher
une message de diagnostic sur la sortie d'erreur, et essayer de revenir à
sa position d'origine ou s'arrêter.
Le décompte des liens dans un répertoire qui contient des liens en dur
vers des répertoires supérieurs sera souvent inférieur à celui
attendu. Cela peut être dû au fait que le find du GNU optimise l'accès en
évitant de parcourir un sous-répertoire qui s'avère être un lien vers un
répertoire supérieur. Bien que find ne parcourt pas le répertoire dans
ce cas précis, il permet aussi d'éviter l'émission d'un message
d'avertissement. Cette façon de faire peut sembler génératrice d'erreurs,
mais il est peu probable que quiconque puisse réellement en être
gêné. Si l'optimisation du parcours des feuilles (NDT : leaf) a été
désactivée avec -noleaf, cette entrée du répertoire sera bel et bien
parcourue, et le message d'avertissement émis si nécessaire. Les liens
symboliques ne peuvent pas servir à créer de telles boucles dans le
système 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 gérée pour des raisons de compatibilité avec divers
systèmes BSD, mais préférez plutôt l'utilisation de l'option -depth
conforme 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 définis dans le standard POSIX.
VARIABLES D'ENVIRONNEMENT
- LANG
-
Fournit une valeur par défaut pour les variables de localisation qui ne
sont pas définies ou nulles.
- LC_ALL
-
Si elle contient une chaîne de caractères non vide, remplace les valeurs
de toutes les autres variables de localisation.
- LC_COLLATE
-
Le standard POSIX exige que cette variable modifie le comportement de la
recherche de motifs à l'oeuvre dans l'option « -name ». Le find du GNU
utilise la fonction fnmatch(3) de la bibliothèque, et donc la gestion du
« LC_COLLATE » dépend de la bibliothèque présente sur votre système.
-
POSIX exige aussi que la variable d'environnement « LC_COLLATE » modifie
le comportement de l'analyse de la réponse de l'utilisateur à la question
posée par « -ok », mais ce n'est pas le cas pour le find du GNU.
- LC_CTYPE
-
Cette variable modifie le traitement des classes de caractères utilisées
par le test « -name », dans le cas où la fonction fnmatch(3) de la
bibliothèque de votre système le supporte. Cela n'a aucun effet pour le
comportement de l'expression « -ok ».
- LC_MESSAGES
-
Détermine la locale à utiliser pour les messages localisés.
- NLSPATH
-
Détermine l'endroit où sont rangés les catalogues de messages localisés.
- PATH
-
Détermine les répertoires dans lesquels find cherchera les exécutables
invoqués par « -exec », « -execdir », « -ok » et « -okdir ».
- POSIXLY_CORRECT
-
Détermine la taille des blocs utilisés par « -ls » et « -fls ». Si
« POSIXLY_CORRECT » est défini, les blocs sont des unités de 512
octets. Sinon, il s'agit d'unités de 1024 octets.
- TZ
-
Modifie le fuseau horaire utilisé dans le format de certaines directives
liées au temps dans -printf et -fprintf.
EXEMPLES
find /tmp -name core -type f -print | xargs /bin/rm -f
Chercher les fichiers qui s'appellent coeur dans le répertoire /tmp
et ses sous-répertoires, puis les effacer. Rappelez-vous que vous pouvez
rencontrer des problèmes si des noms de fichiers comportent des retours à
la ligne, des guillemets simples ou doubles, ou des espaces.
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Chercher les fichiers qui s'appellent coeur dans le répertoire /tmp
et ses sous-répertoires, puis les effacer, en veillant à ce que les noms
de fichiers ou de répertoires qui contiennent des retours à la ligne, des
guillemets simples ou doubles ou des espaces soient correctement
traités. 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 '{}' \;
Exécuter « fichier » sur chaque entrée du répertoire courant ou de
ses sous-répertoires. Attention à bien protéger les accolades par des
guillemets simples afin d'empêcher leur interprétation en tant que
ponctuation du script shell. De la même façon, le point-virgule est
protégé grâce à une barre oblique inverse, bien que « ; » aurait
aussi pu être utilisé.
find / \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
\( -size +100M -fprintf /root/grand.txt '%-10s %p\n' \)
Parcourir le système de fichiers en une seule passe, stockant les fichiers
et répertoires en setuid dans /root/suid.txt et les gros fichiers dans
/root/grand.txt.
find $HOME -mtime 0
Rechercher les fichiers de votre répertoire personnel qui ont été
modifiés lors des dernières vingt-quatre heures. Cette commande s'exprime
de cette façon parce que la recherche utilise le résultat de la division
entière par 24 de l'heure de dernière modification (la fraction horaire
est donc perdue). Ce qui veut dire que pour correspondre à -mtime 0,
un fichier doit avoir une antériorité de modification inférieure à 24
heures.
find . -perm 664
Rechercher les fichiers qui ont la permission de lire et d'écrire pour leur
propriétaire et groupe, et que les autres utilisateurs ne peuvent que
lire. Les fichiers qui satisfont ces critères, mais qui ont d'autres bits
de permissions activés (par exemple si le fichier est exécutable) ne
seront pas sélectionnés.
find . -perm -664
Rechercher les fichiers qui ont la permission de lire et d'écrire pour leur
propriétaire et leur groupe, et que les autres utilisateurs peuvent lire,
sans toutefois s'intéresser à la présence d'autres bits de permissions
(le bit d'exécution par exemple). Un fichier ayant par exemple les droits
0777 sera sélectionné.
find . -perm /222
Rechercher les fichiers qui offrent le droit d'écriture à quelqu'un (son
propriétaire, 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 même chose, mais la première
utilise le mode octal pour représenter les modes du fichiers, alors que les
deux autres se servent de la forme symbolique. Ces commandes recherchent
tous les fichiers dans lesquels soit le propriétaire ou le groupe peuvent
écrire. Ces fichiers n'ont pas à offrir à la fois le droit d'écriture au
propriétaire et au groupe, l'un ou l'autre suffira.
find . -perm -220
find . -perm -g+w,u+w
Ces commandes font toutes deux la même chose, c'est à dire rechercher les
fichiers qui offrent le droit d'écriture au propriétaire 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 or -perm /a+w), mais qui ne sont exécutables par personne
(respectivement ! -perm /111 et ! -perm /a+x)
VALEURS DE RETOUR
find s'arrête en renvoyant la valeur de retour 0 si tous les fichiers
ont été traités avec succès, ou en renvoyant une valeur supérieur à 0
si une erreur est survenue. Cette information est volontairement très
floue, disons que si vous obtenez une valeur qui ne soit pas zéro, il ne
faudra pas vous fier à l'exactitude des résultats fournis par find.
VOIR AUSSI
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 imprimée)
HISTORIQUE
A l'heure de findutils-4.2.2, les métacaractères du shell (« * », « . », « ? » ou « [] » par exemple) trouveront les fichiers
commençant par « . » parce que l'interprétation d'IEEE POSIX 126
l'impose.
FAUX BOGUES
$ find . -name *.c -print
find : les chemins doivent précéder l'expression
Syntaxe : find [CHEMIN] [EXPRESSION]
Cette erreur survient parce que *.c a été interprété par le shell, et
que la commande find a en fait reçu une ligne de commande qui
ressemblait à :
find . -name bigram.c code.c frcode.c locate.c -print
Cette commande ne peut bien sûr en aucun cas fonctionner. Plutôt que de
vous y prendre de cette façon, vous pourriez protéger votre motif de
recherche par des guillemets :
$ find . -name '*.c' -print
BOGUES
Pour le moment, aucun fichier ne correspond au test -perm /000, mais,
afin d'améliorer la cohérence avec -perm -000, cela correspondra
bientôt à tous les fichiers. Cette modification sera probablement
réalisée au début de 2006. En attendant, vous obtiendrez un message
d'avertissement si vous vous en servez.
Des problèmes de sécurité se posent, inhérent au comportement de find
tel que définit par le standard POSIX, et qui ne peuvent donc être
résolus. Par exemple, l'action -exec est dangereuse par nature, et l'usage
de -execdir est préférable. Consultez plutôt Finding Files pour plus
de détails.
La meilleure façon de signaler un bogue est d'utiliser le formulaire en
ligne sur http://savannah.gnu.org/bugs/?group=findutils. L'intérêt de
cette méthode est que vous pourrez ensuite suivre l'évolution de la
résolution du problème. Tout autre commentaire concernant find(1) et le
paquet findutils en général peut être envoyé à la liste de diffusion
bug-findutils. Pour vous abonner à cette liste, envoyez un courriel à
bug-findutils-request@gnu.org.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe Blaess
entre 1997 et 2003.
La version présente dans Debian est dorénavant maintenue 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.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- EXPRESSIONS
-
- OPTIONS
-
- TESTS
-
- ACTIONS
-
- NOMS DE FICHIERS PEU COURANTS
-
- OPÉRATEURS
-
- CONFORMITÉ AUX STANDARDS
-
- VARIABLES D'ENVIRONNEMENT
-
- EXEMPLES
-
- VALEURS DE RETOUR
-
- VOIR AUSSI
-
- HISTORIQUE
-
- FAUX BOGUES
-
- BOGUES
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 13:22:24 GMT, November 11, 2006