zion - find
Nom
find - Rechercher des fichiers dans une hiérarchie de répertoires.
Résumé
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 : .in +1i find . -path './sr*sc' .in -1i 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 : .in +1i find . -path './src/emacs' -prune -o -print .in -1i |
"-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
c
d
p
f
l
s
D
|
"-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 (`e') 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. |
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 `e' 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 : ea
eb
ec
ef
en
er
et
ev
ee
Un `e' suivi de n'importe quel autre caractère est traité comme un caractère ordinaire ; ils sont donc affichés tous les deux. %
%a
%Ak
%b
%c
%Ck
%d
%f
%F
%g
%G
%h
%H
%i
%k
%l
%m
%n
%p
%P
%s
%t
%Tk
%u
%U
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.
Poster un commentaire