Bien utiliser la commande find sous Linux
Le commande find qui parcourt toute une arborescence de fichiers depuis un point de départ pour y trouver le(s) fichier(s) et/ou dossier(s) selon les critères que nous définissons.
Bien qu’elle ne soit pas la plus rapide, la commande find a l’avantage de pouvoir retrouver des fichiers/dossiers qui ne seraient pas encore indexĂ© et offre Ă©galement des paramètre de recherches très avancĂ©s, y compris les expressions rĂ©gulières.
Structure générale de la commande find
Voici la structure générale de la commande find:
find <point_de_départ> <critère_1> [critère_2 ...]Les arguments sont les suivants:
point_de_départ: le chemin à partir duquel la commande find va effectuer sa recherche.critère_x: un critère à respecter pour la correspondance avec le fichier/dossier
Par exemple nous pouvons utiliser l’option -name pour spĂ©cifier le nom du fichier que nous cherchons. De ce fait, si nous voulons chercher un fichier nommĂ© passwd dans le dossier /etc nous utiliserions la commande suivante:
find /etc -name "passwd"
La commande nous affiche ici deux rĂ©sultats mais aussi plusieurs erreurs qui sont simplement dues au fait que l’utilisateur n’a pas les droits de lecture et/ou d’exĂ©cution sur les dossiers indiquĂ©s l’empĂŞchant donc de les parcourir.
La commande find n’est donc pas un outil magique, elle respecte les droits et permissions des utilisateurs.
Voyons maintenant comment tirer parti de cet outil…
Utilisation de la commande find
Recherche par nom de fichier
L’utilisation la plus frĂ©quente consiste a spĂ©cifier le nom du fichier que nous cherchons. C’est le cas du premier exemple que nosu avons vu ci-dessus.
find <point_de_départ> -name <nom>Notez que nous pouvons aussi utiliser certains caractères spéciaux comme « jokers »:
*: correspond Ă n’importe quelle sĂ©rie de caractères?: correspond Ă n’importe quel caractère (un seul)
Ainsi nous pouvons par exemple chercher tous les fichiers dans /etc dont l’extension est .conf:

L’option -name est sensible Ă la casse. Nous pouvons Ă©galement effectuer une recherche insenseible Ă la casse en utilisant -iname.

Recherche par type
Nous pouvons aussi effectuer une recherche sur base du type (dossier ou fichier) d’Ă©lĂ©ment.
find <point_de_départ> -type <d|f>Par exemple, pour trouver tous les répertoires qui se trouvent dans /etc:

Nous pouvons aussi rechercher uniquement les fichiers:

Recherche par taille
L’option -size permet de dĂ©finir des paramètres de recherche basĂ©s sur la taille des fichiers. Elle peut Ă©galement ĂŞtre utilisĂ©e deux fois pour dĂ©finir des limites supĂ©rieure et infĂ©rieure:
find <point_de_départ> -size [+|-]<taille> [-size [+|-]<taille>]Nous pouvons donc chercher tous les fichiers dont la taille est supérieure à 20Mo:

Nous pouvons aussi chercher les fichiers dont la taille est inférieure à 100Ko:

Ou encore chercher les fichiers dont la taille est comprise entre 2Mo et 5Mo:

Recherche par date
La commande find nous permet aussi de rechercher des fichiers sur base d’une date de crĂ©ation, de modification ou d’accès. Les options correspondante sont les suivantes:
| Option | Description |
|---|---|
-atime | Recherche sur base de la date du dernier accès en nombre de jours |
-ctime | Recherche sur base de la date de création en nombre de jours |
-mtime | Recherche sur base de la date de modification en nombre de jours |
| -amin | Recherche sur base de la date du dernier accès en nombre de minutes |
| -cmin | Recherche sur base de la date de création en nombre de minutes |
| -mmin | Recherche sur base de la date de modification en nombre de minutes |
Nous pouvons donc rechercher les fichiers modifiés il y a moins de 1 jour:

Ou encore rechercher les fichiers modifiés il y a plus de 5 jours:

En l’absence de signe + ou -, le nombre de jour ou de minute sera comparĂ© avec exactitude.
Recherche par utilisateur
Moyennant l’option -user nous pouvons aussi chercher les fichiers qui appartiennent Ă un utilisateur donnĂ©:
find <point_de_départ> -user <utilisateur>
Nous pouvons aussi effectuer une recherche par uid avec l’option -uid.
find <point_de_départ> -uid <id_utilisateur>Rechercher les éléments vides
L’option -empty nous permet de n’obtenir que les Ă©lĂ©ments vides et combinĂ©e Ă l’option -type, nous pouvons donc chercher soit les dossiers vides, soit les fichiers vides.
find <point_de_dĂ©part> -empty -type <f|d>Donc si nous voulons trouver les dossiers vides dans notre rĂ©pertoire personnel…

Combiner les paramètres
Nous pouvons bien évidemment aussi combiner tous ces paramètres pour affiner notre recherche. Par exemple, nous pourrions chercher les fichiers (pas les dossiers) dont le nom commence par no dans le dossier /etc et dont la taille est inférieure à 5ko.
sudo find /etc -name no* -type f -size -5k
Notez ici l’utilisation de sudo permettant d’exĂ©cuter find avec l’identitĂ© de l’utilisateur root et donc d’avoir accès Ă toute l’arborescence.
Exécuter une commande
Outre le fait de pouvoir rechercher des fichiers et dossiers, la commande find nous permet aussi d’exĂ©cuter une commande sur chaque rĂ©sultat de la recherche. Pour cela nous devons utiliser l’option –exec:
find <point_de_départ> <critère_1> ... <critère_n> -exec <commande> {} \;Ici nous avons les éléments suivants:
-exec: l’option d’exĂ©cutioncommande: la commande Ă exĂ©cuter sur le fichier/dossier{}: l’endroit oĂą sera insĂ©rĂ© le chemin du fichier- un espace obligatoire
\;: le marqueur de fin.
Pour l’illustration, voici le contenu du dossier data prĂ©sent dans mon rĂ©pertoire personnel. J’y ai créé une sĂ©rie de fichiers fictifs:

Imaginons maintenant que je veuille changer retirer les permissions d’Ă©criture et de lecteur du groupe aux fichiers dont le nom contient 06.txt.
find ~/data -type f -name *06.txt -exec chmod g-rw {} \;Une fois cette commande exĂ©cutĂ©e, j’obtiens le rĂ©sultat suivant:

Conclusion
La commande find nous permet sans trop d’effort de rechercher efficacement et prĂ©cisĂ©ment des fichiers ou dossiers sur base d’une sĂ©rie de critères. Le temps d’exĂ©cution peut parfois ĂŞtre long de par le fonctionnement rĂ©cursif de cette commande, mais en contrepartie elle nous permet de retrouver des fichiers qui ne sont pas indexĂ©s.

Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.