La commande find parcourt une arborescence et teste chaque entrée selon des critères comme son nom, son type, sa taille ou sa date de modification.
Ligne de Commande · Leçon 14
find
Apprenez à rechercher dans des arborescences par nom, type, taille et date, puis à agir sur des résultats vérifiés.
Choisir où rechercher
La syntaxe élémentaire est :
find [PATH] [EXPRESSION]
Le chemin choisit le point de départ et l'expression sélectionne les entrées situées dessous, ou agit sur elles.
Cette commande recherche dans /home et ses descendants les entrées nommées puppies.jpg :
$ find /home -name puppies.jpg
La récursivité est le comportement par défaut. Utilisez . comme point de départ pour rechercher dans l'arborescence du répertoire actuel.
Quelle commande recherche dans le répertoire actuel et ses descendants les entrées nommées notes.txt ?
Rechercher par nom et par type
Le test -name accepte un nom de base exact ou un motif de type shell. Placez les jokers entre guillemets afin que le shell actuel les transmette inchangés à find :
$ find . -name "*.txt"
Sans guillemets, le shell peut développer *.txt dans le répertoire actuel avant le démarrage de find. Utilisez -iname à la place de -name pour ignorer la casse.
Ajoutez -type d pour choisir les répertoires ou -type f pour les fichiers ordinaires :
$ find /home -type d -name MyFolder
Les deux tests doivent être vrais : l'entrée doit être un répertoire dont le nom de base est MyFolder.
Quelle commande trouve sous le répertoire actuel les fichiers ordinaires dont le nom se termine par .txt ?
Rechercher par taille et date de modification
Avec -size, + signifie supérieur à l'unité indiquée et - inférieur :
$ find . -type f -size +10M
$ find . -type f -size -1k
La majuscule M représente des unités de 1 048 576 octets, et le k minuscule des unités de 1 024 octets. find arrondit la taille à l'unité choisie avant la comparaison ; le comportement aux limites dépend donc de ces unités.
-mtime teste le nombre de périodes complètes de 24 heures écoulées depuis la modification :
$ find . -type f -mtime -7
$ find . -type f -mtime +30
-mtime -7 correspond à une valeur inférieure à 7, et -mtime +30 à une valeur supérieure à 30. Ces tests utilisent des périodes complètes de 24 heures, pas les limites de minuit du calendrier.
Quelle commande trouve sous . les fichiers ordinaires dont l'âge de modification est inférieur à sept périodes complètes de 24 heures ?
Afficher les résultats et agir dessus
Sans action, GNU find affiche les chemins correspondants. Vous pouvez écrire explicitement -print pour rendre l'action claire :
$ find . -name "*.log" -print
-exec exécute une autre commande pour les correspondances :
$ find . -name "*.log" -exec ls -l {} \;
Dans la forme \;, {} est remplacé par un chemin correspondant à chaque invocation. Le point-virgule termine l'action -exec et est échappé afin que le shell le transmette à find.
Avant une action destructive comme -delete ou une commande -exec qui modifie des fichiers, exécutez les mêmes tests avec -print et inspectez tous les résultats. Un chemin de départ plus étroit et -maxdepth N peuvent aussi limiter la recherche.
Vous préparez une commande find susceptible de supprimer ensuite d'anciens fichiers .log. Que devez-vous faire d'abord ?
Dans find . -name "*.log" -exec ls -l {} \;, que représente {} ?
Les messages de permission refusée signifient généralement que le compte actuel ne peut pas parcourir une partie de l'arborescence. Préférez un départ plus étroit et pertinent ; n'ajoutez des privilèges qu'après avoir compris et voulu l'accès élargi.
Pour vous exercer, essayez Commande Linux find : rechercher des fichiers et Découvrir les ressources système essentielles.
Leçon terminée
Vous avez terminé find
Vous savez maintenant construire des expressions find ciblées et vérifier leurs résultats avant d'agir.
Choisir le point de départ utile le plus étroit.
Citer les motifs de noms et les combiner avec des tests de type.
Filtrer par taille ou périodes complètes de 24 heures.
Limiter la profondeur de récursion si nécessaire.
Afficher et inspecter les correspondances avant toute action destructive.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit