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 GNU de find.
find parcourt les arborescences de répertoires commençant
en chacun des chemins mentionnés, en évaluant les expres
sions fournies pour chaque fichier rencontré.
L'évaluation de l'expression se fait de gauche à droite,
en suivant des règles de précédence décrite dans la sec
tion 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 régulière.
Si aucun chemin n'est mentionné, le répertoire en cours
sert de point de départ.
Si aucune expression n'est fournie, find utilise l'expres
sion `-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'ensem
ble des opérations plutôt que le traitement d'un fichier
particulier, et renvoyant toujours vrai), de tests (ren
voyant 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'expres
sion est vraie.
OPTIONS
Toutes les options renvoient toujours la valeur vraie.
FSF 15 Janvier 1997 1
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
Elles ont toujours un effet global, plutôt que de s'appli
quer uniquement à leur emplacement dans l'expression.
Néanmoins, pour améliorer la lisibilité, 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 plutot 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 sur la sortie standard
et terminer 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 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 arguments de la ligne de com
mande.
-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 compati
bilité avec d'anciennes versions de find.
-noleaf
Ne pas faire d'optimisation en supposant que les
répertoires contiennent 2 fois moins de sous-réper
toires que leurs nombres de liens physiques. Cette
option est nécéssaires lorsque l'on parcourt 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 mon
tage 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
FSF 15 Janvier 1997 2
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
répertoire parent. Quand find examine un réper
toire, il sait qu'il y a 2 fois moins de sous-
répertoires 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, et ceci
fournit une augmentation notable de la vitesse de
traitement.
-version, --version
Afficher un numéro de version sur la sortie stan
dard et terminer 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 file
dernier accès au fichier plus récent que la
dernière modification de file. Le comportement de
l'option -anewer est modifié 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 file
dernière modification du statut du fichier plus
récente que la dernière modification du fichier
file. Le comportement de l'option -cnewer est mod
ifié par l'option -follow uniquement si celle-ci la
précède sur la ligne de commande.
FSF 15 Janvier 1997 3
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
-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 d'Unix. Une liste non-
exhaustive des systèmes acceptés sur certaines ver
sions 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 pattern
identique à -name, mais sans différencier les
majuscules et les minuscules. Par exemple les
motifs `fo*' et `F??' correspondent 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 répresentant un lien symbolique, dont le
contenu correspond au motif indiqué. Lors du
développement des méta-caractères, `/' et `.' ne
sont pas traités différement des autres caractères
FSF 15 Janvier 1997 4
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
(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 descrip
tion 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
utilisateur.
-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érement 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épertoire `src/emacs' et tous ses sous-réper
toires, 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
FSF 15 Janvier 1997 5
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
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
régulière 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
expressions régulières `.*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 buffer)
c fichier spécial en mode caractère (sans
buffer)
d répertoire
p tube nommé (FIFO)
f fichier régulier
l liens symbolique
s socket
-uid n Fichier dont l'U-ID numérique vaut n.
FSF 15 Janvier 1997 6
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
-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 symbol
ique. 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
occurences, 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 apos
trophes. La commande est exécutée depuis le réper
toire 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 correspondent
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
FSF 15 Janvier 1997 7
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
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 sor
tie standard, suivi d'un saut de ligne.
-print0
vrai; affiche le nom complet du fichier sur la sor
tie 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 stan
dard, 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(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 suiv
antes :
\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 (%)
FSF 15 Janvier 1997 8
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
%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(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 Jan
vier 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
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 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 (Sun..Sat)
A nom local entier du jour de la
semaine, de longueur variable (Sun
day..Saturday)
FSF 15 Janvier 1997 9
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
b abréviation locale du mois
(Jan..Dec)
B nom local entier du mois, de
longueur variable (January..Decem
ber)
c date et heure locales (Sat 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 corre
spond à Dimanche
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 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 fonc
tion 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épertoires, 0 signifiant que le fichier
est un argument de la ligne de commande.
FSF 15 Janvier 1997 10
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
%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 Numero 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'argu
ment 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 proprietaire du fichier.
Un caractère `%' suivi de tout autre caractère est
éliminé (mais le second caractère est affiché).
FSF 15 Janvier 1997 11
FIND(1L) Manuel de l'utilisateur Linux FIND(1L)
-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_CORRECT soit posi
tionnée, auquel cas la taille est calculée en blocs
de 512 octets.
OPERATEURS
Dans l'ordre de précédence décroissante :
( expr )
Force la précédence.
! expr Vrai si expr est fausse.
-not expr
Comme ! expr.
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 imprimée)
TRADUCTION
Christophe Blaess, 1997.
FSF 15 Janvier 1997 12