Accueil
 1  Licence
 2  Prologue
 3  Système d'exploitation, système d'exploitation Unix
 4  Première utilisation
 5  Système de fichiers
 6  Shell
 7  Processus
 8  Quelques outils supplémentaires
 8.1  Éditeurs de texte sous Unix
 8.2  Recherche d'expression (grep) et sélection de champs (cut)
 8.3  Tris (sort), fusion (paste) et éclatement (split) de fichiers
 8.4  Recherche de fichiers (find)
 8.4.1  Recherche de fichiers (locate et which)
 8.5  Archivage (tar)
 8.6  Autres utilitaires de gestion de l'espace de stockage
 8.7  Conclusion
 9  Communications sous Unix
 10  Épilogue: Rappels importants
 Index
 Glossaire
 Foire Aux Questions
 Aide

 Contacts

W3C validator

Département INF  
 Initiation à UNIX


8.4 Recherche de fichiers (find)

  • La commande find recherche les fichiers satisfaisant un ensemble de critères de sélection à partir d’un répertoire.
  • Le principe de find est de parcourir récursivement l’arborescence du système de fichiers, et pour chaque élément, de tester chaque critère:
    • Si le critère est vérifié alors find teste le critère suivant,
    • Sinon, find passe à l’élément suivant.
  • La syntaxe de find est la suivante:  

    problème génération shellcmds verbatim

  • La commande find est très utilisée, principalement pour rechercher des fichiers par nom (critère -name) et affichage (critère -print).
  • Par exemple:  
    problème génération shellcmds verbatim

    previous     next 


Polycopié de cours Commentaires de cette page dans le polycopié de cours

 
Le critère -exec cmde permet d’exécuter la commande cmde et le critère est considéré comme vérifié si le code de retour de la commande est nul (exécution sans problème). La fin de la commande passée en argument au critère -exec doit être indiquée par le caractère point-virgule. Or, vous avez vu à la section 6 que le caractère point virgule est un méta-caractère du shell et est interprété par celui-ci comme un séparateur de commande. Dans le cadre de la commande find, le caractère point virgule fait partie de la commande donc il faut empêcher son interprétation par le shell, soit en le précédant par un antislash (\;), soit en l’encadrant par deux quotes (Ž;Ž). D’autre part, les accolades ({}) utilisées comme argument d’une commande argument de -exec représentent le nom de l’élément ayant satisfait les critères précédents. Lorsqu’aucune action n’est demandée sur les éléments trouvés, la commande find affiche le nom des éléments. Si des actions sont demandées et si le critère -print n’est pas présent, seul le résultat de ces actions, sans les noms des éléments de l’arborescence correspondants, est affiché.

Par défaut, find ne déréférence pas les liens symboliques, c.-à-d. find n’essaie pas de savoir si le lien symbolique référence un répertoire. Pour « traverser » les liens symboliques, il faut utiliser le critère -follow (avec le critère -noleaf, voir la page find de la section 1 du manuel en ligne).

Enfin, les critères peuvent être combinés avec les opérateurs « non » (!), « et » (-a), « ou » (-o) et groupés avec les parenthèses \( et \).

Voici quelques autres critères de sélection:

  • -type x: vrai si entrée de type x, x peut être f pour file, d pour directory...
  • -user nom: vrai si entrée appartient à nom
  • -size n: vrai si entrée de taille n blocs
  • -mtime n: vrai si entrée modifiée n jours plus tôt
  • Remarques: n = exactement n, +n et -n pour >n et <n, respectivement

Par exemple:  
problème génération shellcmds verbatim

L’illustration interactive en mode commande qui suit vous présente des exemples d’utilisation de la commande find. Vous n’allez voir que la troisième des quatre parties de cette illustration interactive qui couvre le contenu de plusieurs pages du cours.

Illustration Interactive« Commande “find” »


Question: Règle des 3 bouées
Auto-évaluation: pas compris pas sûr de comprendre compris

INF, Télécom SudParis, CSC 3001, Sept. 2014