FIND

Section: Manuel de l'utilisateur Linux (1L)
Updated: 15 janvier 1997
Index


NOM
SYNOPSIS
DESCRIPTION
EXPRESSIONS
OPTIONS
TESTS
ACTIONS
OPÉRATEURS
VOIR AUSSI
TRADUCTION

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 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 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 sur tous les fichiers pour lesquels l'expression est vraie.

OPTIONS

Toutes les options renvoient toujours la valeur vraie. Elles ont toujours un effet global, plutôt que de s'appliquer 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 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 sur la sortie standard et se 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 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 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 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 parent. 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, et ceci fournit une augmentation notable de la vitesse de traitement.
-version, --version
Afficher un numéro de version sur la sortie standard et se 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 fichier
dernier accès au fichier plus récent que la dernière modification de fichier. 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 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 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 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??' 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 représentant 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é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 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é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épertoire `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 expressions 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
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 commande 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 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 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 directives`%'. La largeur et la précision des champs peuvent être spécifiés comme dans la fonction printf(3) du langage C. 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
\\
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 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 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
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 (Dim .. Sam)
A
nom local entier du jour de la semaine, de longueur variable (Dimanche .. Samedi)
b
abréviation locale 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 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épertoires, 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_CORRECT 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 )
Force la priorité.
! 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-2003.