FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
NOM
find - Rechercher des fichiers dans une hiérarchie de répertoires.
SYNOPSIS
find [chemin...] [expression]
DESCRIPTION
Cette page de manuel documente la version(1,3,5) GNU de find. find parcourt
les arborescences de répertoires commençant en 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 des règles de priorité décrites dans la section
OPÃRATEURS, jusqu'à ce que le résultat soit connu (par exemple la
partie gauche vraie pour un opérateur OU ou fausse pour un opérateur
ET).
Le premier argument commençant par `-', `(', `)', `,', ou `!' est
considéré comme le début de l'expression, tous les arguments
précédents sont des chemins à parcourir. Tous les arguments
ultérieurs sont considérés comme le reste de l'expression
rationnelle. de point de départ. Si aucune expression n'est fournie,
find utilise l'expression `-print' par défaut.
find se termine avec le code de retour 0 si tous les fichiers ont pu
être examinés correctement, et supérieur à 0 si une erreur s'est
produite.
EXPRESSIONS
L'expression est constituée d'options (affectant l'ensemble des
opérations plutôt que le traitement d'un fichier particulier, et ren-
voyant 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 sur tous les fichiers pour
lesquels l'expression est vraie.
OPTIONS
Toutes les options renvoient toujours la valeur vraie. Elles ont tou-
jours un effet global, plutôt que de s'appliquer uniquement à leur
emplacement dans l'expression. Néanmoins, pour améliorer la lisi-
bilité, il est préférable de les placer au début de l'expression.
-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.
-depth Traiter d'abord les sous-répertoires avant le répertoire lui-
même.
-follow
Déréférencer les liens symboliques pour accéder aux fichiers
vers lesquels ils pointent. Ceci implique l'option -noleaf.
-help, --help
Afficher un message d'aide(1,5) sur la sortie standard et se ter-
miner normalement.
-maxdepth n
Descendre au plus n niveaux (n étant un entier positif ou nul),
dans les répertoires parcourus. `-maxdepth 0' signifie que les
tests et les actions ne s'appliquent qu'aux arguments de la
ligne de commande.
-mindepth n
Ne pas appliquer les tests ou les actions à des niveaux de pro-
fondeur 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 arguments 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.
-noleaf
Ne pas faire d'optimisation en supposant que les répertoires
contiennent deux sous-répertoires de moins que leurs nombres de
liens physiques. Cette option est nécessaire lorsque l'on par-
court des systèmes de fichiers ne suivant pas les conventions
Unix sur 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 au moins de
deux liens physiques, son nom et `.'. De plus chaque sous-
répertoire a également un lien `..' vers le répertoire par-
ent. 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éper-
toires. S'il n'y a que les noms de fichiers à examiner, il n'a
plus besoin de vérifier leur nature, et ceci fournit une aug-
mentation notable de la vitesse de traitement.
-version, --version
Afficher un numéro de version(1,3,5) sur la sortie standard et se ter-
miner normalement.
-xdev Ne pas parcourir les répertoires situés sur d'autres systèmes
de fichiers.
TESTS
Les arguments numériques peuvent être indiqués comme suit :
+n supérieur à n,
-n inférieur à n,
n é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 modifi-
cation de fichier. Le comportement de l'option -anewer est mod-
ifié par l'option -follow uniquement si celle-ci la précède
sur la ligne de commande.
-atime n
dernier accès au fichier il y a n*24 heures.
-cmin n
dernière modification du statut du fichier il y a n minutes.
-cnewer fichier
dernière modification du statut du fichier plus récente que la
dernière modification du fichier fichier. Le comportement de
l'option -cnewer est modifié par l'option -follow uniquement si
celle-ci la précède sur la ligne de commande.
-ctime n
dernière modification du statut du fichier il y a n*24 heures.
-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 de systèmes de fichiers dépendent de la
version(1,3,5) d'Unix. Une liste non exhaustive des systèmes accept(2,8)é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 valant 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.
-iname motif
identique à -name, mais sans différencier les majuscules et
les minuscules. Par exemple les motifs `fo*' et `F??' correspon-
dent aux noms de fichiers `Foo', `FOO', `foo', `fOo', etc...
-inum n
fichier dont le numéro d'i-noeud est n.
-ipath motif
identique à -path, mais sans différencier les majuscules et
les minuscules.
-iregex motif
identique à -regex, mais sans différencier les majuscules et
les minuscules.
-links n
fichier ayant n liens.
-lname motif
fichier représentant un lien symbolique, dont le contenu corre-
spond au motif indiqué. Lors du développement des méta-car-
actères, `/' et `.' ne sont pas traités différemment des
autres caractères (voir l'exemple dans la description de
l'option -path).
-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.
-name motif
Fichier dont le nom de base (sans les répertoires du chemin
d'accès), correspond au motif du shell. Les méta-caractères
(`*', `?', et `[]') ne sont jamais mis en correspondance avec un
point `.' au début du nom. Pour ignorer un répertoire, ainsi
que tous ses sous-répertoires, utiliser l'option -prune ; vous
trouverez un exemple dans la description de l'option -path.
-newer fichier
Fichier modifié plus récemment que le fichier indiqué.
L'option -newer n'est affectée par l'option -follow que si
celle-ci la précède sur la ligne de commande.
-nouser
Fichier dont l'U-ID numérique ne correspond à aucun utilisa-
teur.
-nogroup
Fichier dont le G-ID numérique ne correspond à aucun groupe
d'utilisateurs.
-path motif
Fichier dont le nom complet correspond au motif fourni. Lors du
développement des méta-caractères, `/' et `.' ne sont pas
traités différemment des autres caractères, ainsi par exemple
:
find . -path './sr*sc'
affichera l'élément de répertoire intitulé './src/misc'
(s'il en existe un). Pour ignorer une arborescence complète de
répertoires, utilisez l'option -prune plutôt que de vérifier
chaque fichier de l'arbre. Par exemple, pour ignorer le réper-
toire `src/emacs' et tous ses sous-répertoires, tout en
affichant le nom de tous les autres fichiers, faites quelque
chose comme :
find . -path './src/emacs' -prune -o -print
-perm mode
Fichier dont les autorisations d'accès sont fixées exactement
au mode indiqué (en notation symbolique ou octale). La notation
symbolique utilise le mode 0 comme point de départ.
-perm -mode
Fichier ayant au moins toutes les autorisations indiquées dans
le mode.
-perm +mode
Fichier ayant certaines des autorisations indiquées dans le
mode.
-regex motif
Nom de fichier correspondant à l'expression rationnelle motif.
Il s'agit d'une correspondance sur le nom de fichier complet,
pas d'une recherche. Par exemple, pour mettre en correspondance
un fichier nommé `./fubar3', vous pouvez utiliser les expres-
sions rationnelles `.*bar.' ou `.*b.*3', mais pas `b.*r3'.
-size n[bckw]
Fichier utilisant n unités d'espace. Les unités sont des
blocs de 512 octets par défaut (ou si un suffixe `b' suit le
nombre n), des octets si un suffixe `c' suit n, des kilo-octets
si un suffixe `k' est utilisé, ou des mots de 2 octets si un
`w' suit le nombre n. La taille ne prend pas en compte les
blocs indirects, mais elle comptabilise les blocs des fichiers
éparpillés pas encore alloués.
-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 liens symbolique
s socket(2,7,n)
D door (Solaris)
-uid n Fichier dont l'U-ID numérique vaut n.
-used n
fichier dont le dernier accès date de n jours après la
dernière modification de son statut.
-user utilisateur
fichier appartenant à l'utilisateur indiqué (U-ID numérique
éventuellement)
-xtype c
comme -type sauf si le fichier est un lien symbolique. Dans ce
cas, si l'option -follow n'a pas été fournie, le test est vrai
si le fichier destination du lien est de type c ; si l'option
-follow a été réclamé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
-exec commande ;
Exécute la commande ; vrai si le code de retour 0 est renvoyé.
Tous les arguments suivants de find sont considérés comme des
arguments pour la ligne de commande, jusqu'Ã ce qu'on rencontre
un `;'. La chaîne `{}' est remplacée par le nom du fichier en
cours de traitement, et ceci dans toutes ses occurrences, 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 com-
mande par le shell, en utilisant le caractère d'échappement
(`\') ou une protection par des apostrophes. La commande est
exécutée depuis le répertoire de départ.
-fls fichier
vrai ; comme -ls mais écrit dans le fichier comme le fait
-fprint.
-fprint fichier
vrai ; écrit 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 fichiers ``/dev/stdout'' et
``/dev/stderr'' sont traités de manière spécifique, ils cor-
respondent respectivement à la sortie standard, et à la sortie
des erreurs.
-fprint0 fichier
vrai ; comme -print0 mais écrit dans le fichier comme le fait
-fprint.
-fprintf fichier format
vrai ; comme -printf mais écrit dans le fichier comme le fait
-fprint.
-ok commande ;
comme -exec 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.
-print vrai ; affiche le nom complet du fichier sur la sortie standard,
suivi d'un saut de ligne.
-print0
vrai ; affiche le nom complet du fichier sur la sortie standard,
suivi d'un caractère nul. Ceci permet aux fichiers dont le nom
contient un saut de ligne, d'être correctement interprétés
par les programmes utilisant les données en sortie de find.
-printf format
vrai ; affiche le format indiqué sur la sortie standard, en
interprétant les séquences d'échappement `\' et les direc-
tives`%'. La largeur et la précision des champs peuvent être
spécifiés comme dans la fonction printf(1,3,1 builtins)(3) du langage C. Con-
trairement à -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
\\ Un caractère `Backslash' littéral (`\').
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 ren-
voyé 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(3). Les valeurs
possibles pour 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(3) existantes.
@ secondes écoulées depuis le 1er Janvier 1970 Ã
00h 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(3,5,7)
r heure, sur un cadran de 12 heures (hh:mm:ss [AP]M)
S secondes (00..61)
T heure, sur un cadran de 24 heures (hh:mm:ss)
X représentation locale(3,5,7) 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(3,5,7) du jour de la semaine (Dim ..
Sam)
A nom local entier du jour de la semaine, de
longueur variable (Dimanche .. Samedi)
b abréviation locale(3,5,7) du mois (Jan..Dec)
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 comme 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), 0 correspond Ã
Dimanche
W numéro de la semaine dans l'année, les semaines
commençant le Lundi (00..53)
x représentation locale(3,5,7) de la date (mm/jj/aa)
y les deux dernier chiffres de l'année
(00..99)
Y année (1970...)
%b Taille du fichier en nombre de blocs de 512 octets
(arrondi par excès).
%c Date de dernière modification du statut du fichier, dans
le format renvoyé par la fonction C ctime(3).
%Ck Date de dernière modification du statut du fichier, dans
le format spécifié par k, comme pour la directive %A.
%d Profondeur du fichier dans l'arborescence des réper-
toires, 0 signifiant que le fichier est un argument de la
ligne de commande.
%f Nom du fichier, sans nom de répertoire.
%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 G-ID
numérique si le groupe n'a pas de nom.
%G G-ID numérique du fichier.
%h Répertoires en tête du nom de fichier (tout sauf le
dernier nom).
%H Argument de la ligne de commande à partir duquel le
fichier a été trouvé.
%i Numéro d'i-noeud du fichier (en décimal).
%k Taille du fichier, en nombre de blocs de 1 Kilo-Octet,
arrondi par excès.
%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).
%n Nombre de liens physiques sur le fichier.
%p Nom du fichier.
%P Nom du fichier, ainsi que le nom de l'argument 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(3).
%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 U-ID numérique si
l'utilisateur n'a pas de nom.
%U U-ID numérique du propriétaire du fichier.
Un caractère `%' suivi de tout autre caractère est éliminé
(mais le second caractère est affiché).
-prune vrai si l'option -depth n'est pas fournie ; ne pas descendre
dans l'arborescence du répertoire en cours.
faux si l'option -depth est fournie, et sans effet.
-ls vrai, affiche le nom du fichier en cours dans le format `ls
-dils' sur la sortie standard. La taille est comptée en blocs
de 1 Ko, Ã moins que la variable d'environnement POSIXLY_COR-
RECT soit positionnée, auquel cas la taille est calculée en
blocs de 512 octets.
OPÃRATEURS
Dans l'ordre de priorité décroissante :
( expr(1,3,n) )
Force la priorité.
! expr(1,3,n) Vrai si expr(1,3,n) est fausse.
-not expr(1,3,n)
Comme ! expr(1,3,n).
expr1 expr2
ET (implicite) ; expr2 n'est pas évaluée si expr1 est fausse.
expr1 -a expr2
Comme expr1 expr2.
expr1 -and expr2
Comme expr1 expr2.
expr1 -o expr2
OU ; expr2 n'est pas évaluée si expr1 est vraie.
expr1 -or expr2
Comme expr1 -o expr2.
expr1 , expr2
Liste ; expr1 et expr2 sont toujours évaluées toutes les deux.
La valeur de expr1 est ignorée ; la valeur de la liste est
celle de expr2.
VOIR AUSSI
locate(1L), locatedb(5L), updatedb(1L), xargs(1L) Finding Files (en
ligne dans Info, ou en version(1,3,5) imprimée)
TRADUCTION
Christophe Blaess, 1997-2003.
findutils 15 janvier 1997 FIND(1L)