La commande find est un puissant utilitaire de recherche utilisé pour localiser des fichiers sous Linux et Unix comme le système d'exploitation. Il peut trouver des fichiers et des répertoires en fonction de différents critères tels que le nom, l'extension, le type, la date de modification et de création, les autorisations, la taille, le propriétaire.
Find peut également effectuer une action basée sur une commande, par exemple rechercher des fichiers et exécuter delete, count, etc.
Ce didacticiel se concentrera sur l'explication de la manière d'utiliser la commande de recherche et vous guidera à travers des exemples.
Syntaxe :
La syntaxe de base de find l'utilisation de la commande est la suivante :
find <directory-to-search> [OPTIONS] <find name,file,extension>
Le -H
et -L
permettent de gérer les liens symboliques lors de la recherche, -P (ne pas suivre les liens symboliques) et -L (suivre les liens symboliques).
1. Rechercher un fichier par nom
Pour trouver un fichier par son nom , utilisez la commande find avec -name
option.
En supposant que vous souhaitiez rechercher le fichier portant le nom 'nginx.yaml' dans le répertoire Documents, vous pouvez exécuter la commande suivante :
$ find /Documents -name nginx.yaml
Cela trouvera le fichier nommé "nginx.yaml" dans le Documents/ et tous les sous-répertoires :
De plus, pour rechercher le fichier "nginx.yaml" dans le répertoire courant et tous ses sous-répertoires, exécutez :
$ find -name nginx.yaml
Le point (.) après la commande find indique de lancer la recherche à partir du répertoire courant :
$ find . -name nginx.yaml
2. Rechercher des fichiers par extension
Si vous souhaitez rechercher tous les fichiers par extension , vous pouvez utiliser la commande find avec -name
option suivante avec le *.
Par exemple, vous pouvez rechercher tous les fichiers portant l'extension '.png' dans le répertoire personnel en exécutant la commande suivante :
$ find $HOME -name *.png
3. Rechercher uniquement les répertoires
Si vous souhaitez rechercher uniquement les répertoires , vous pouvez exécuter la commande find avec -type d
option.
Supposons que vous souhaitiez rechercher tous les répertoires du dossier Documents/, lançons :
$ find /Documents -type d
4. Rechercher uniquement les fichiers
Il existe de nombreux types de fichiers différents sous Linux, tels que :répertoires, liens symboliques, socket, fichiers normaux, etc. Si vous souhaitez rechercher uniquement des fichiers normaux , vous pouvez exécuter la commande find avec l'option '-type f'.
Par exemple, en supposant que vous ne trouviez que des fichiers dans le répertoire courant, lançons :
$ find . -type f
5. Rechercher et supprimer
Dans certaines situations, vous souhaitez rechercher et supprimer fichiers/répertoires qui ne sont plus nécessaires, vous pouvez exécuter la commande find avec l'option '-delete'.
Par exemple, trouvez toutes les images avec l'extension *.png dans le dossier Documents/ et supprimez-les :
$ find /Documents -name *.png -delete
6. Rechercher des fichiers ayant des autorisations spécifiques
Si vous souhaitez rechercher tous les fichiers qui ont une autorisation spécifique , vous pouvez utiliser la commande Linux find avec l'option '-perm'.
Par exemple, pour trouver des fichiers qui ont la permission '755', lançons :
$ find . -type f -perm 775 -exec ls -l {} \;
7. Rechercher des fichiers et des répertoires par date/heure
La commande Linux find vous permet de rechercher des fichiers et des répertoires par horodatage.
Vous pouvez utiliser la commande find avec l'option '-mtime -N' pour rechercher les fichiers dont la dernière modification remonte à 'N' jours. Par exemple, pour rechercher tous les fichiers qui ont été modifiés au cours des 2 derniers jours dans le répertoire courant, lançons :
$ find . -type f -mtime -2 -exec ls -l {} \;
Une autre façon d'utiliser la commande find pour rechercher des fichiers/répertoires par date/heure consiste à utiliser l'option '-newerXY'. Où X et Y peuvent être :
a
- le temps d'accès du fichier de référence
B
- l'heure de naissance du fichier de référence
c
- l'heure de changement d'état de l'inode du fichier de référence
m
- l'heure de modification du fichier de référence
t
- refer est interprété directement comme une heure
Par exemple, pour rechercher tous les fichiers modifiés le 4 juillet 2020 dans le répertoire courant, lançons :
$ find . -type f -newermt 2020-07-04 -ls
8. Rechercher des fichiers et des répertoires par taille
La commande Linux find vous permet de rechercher des fichiers/répertoires par taille en exécutant la commande avec l'option '-size'.
En supposant que vous souhaitiez rechercher des fichiers supérieurs à 1 Go, vous pouvez exécuter la commande suivante :
$ find . -type f -size +1G
Quelques exemples pratiques
01) Rechercher des fichiers/répertoires vides
Cette sortie listera tous les fichiers et dossiers vides dans le répertoire et les sous-répertoires actuels :
$ find . -empty -ls
02) Trouver tous les fichiers .jpg
$ find . -name *.jpg
03) Trouver tous les répertoires avec la permission 644
La sortie vous montre tous les dossiers du répertoire ou du sous-répertoire actuel qui ont la permission 644 :
$ find . -type d -perm 644 -ls
04) Rechercher des fichiers appartenant à un utilisateur spécifique
Si vous souhaitez vérifier tous les fichiers appartenant à l'utilisateur "cas" dans le répertoire courant, vous pouvez le faire comme suit :
$ find . -user cas -ls
05) Rechercher des fichiers par numéro d'inode
Pour rechercher un fichier par son numéro d'inode, vous pouvez utiliser find avec -inum
option. Par exemple :
$ find -inum 534937
06) Compter le nombre de fichiers
$ find -type f -exec basename {} \; | wc -l
07) Compter le nombre de répertoires
$ find -type d -exec basename {} \; | wc -l
08) Rechercher des fichiers avec une profondeur particulière
En supposant que vous souhaitiez rechercher le fichier "Dockerfile" dans le dossier HOME et ses sous-répertoires et non dans les sous-répertoires de niveau supérieur, vous devez définir l'option '-maxdepth' sur 2 comme suit :
$ find $HOME -maxdepth 2 -name Dockerfile
Conclusion
Un autre outil puissant est la commande fd qui est une alternative à la commande find.
Dans ce didacticiel, nous avons appris à utiliser la commande Linux find pour rechercher des fichiers et des répertoires. Merci d'avoir lu et s'il vous plaît laissez votre suggestion dans la section des commentaires ci-dessous.