Vous êtes-vous déjà retrouvé à chercher frénétiquement un fichier important, pour vous rendre compte que vous avez perdu de nombreuses heures à essayer de chercher dans chaque répertoire mais que le fichier est introuvable ? Eh bien, c’est un problème courant auquel la plupart des utilisateurs de Linux sont confrontés, en particulier les nouveaux utilisateurs avec un grand nombre de fichiers et de répertoires désorganisés. Dans cet article, nous expliquons comment rechercher des fichiers et des répertoires de différentes manières à l’aide de la commande find sous Linux.
Quelle est la commande find sous Linux
La commande find est l’un des outils les plus importants qui aident les utilisateurs Linux à rechercher leurs fichiers et dossiers avec une variété d’options. Vous pouvez même exécuter des commandes shell sur les éléments de recherche renvoyés (nous en reparlerons plus tard !). La syntaxe pour rechercher des fichiers et des répertoires à l’aide de la commande find est :
find <options> <location> <expression>
Voici comment nous allons expliquer la syntaxe ci-dessus :
<options>
sont les différentes options permettant d’affiner la recherche<location>
spécifie l’emplacement en mémoire dans lequel la commande find doit chercher<expression>
spécifie l’élément de recherche à rechercher
Certaines des options courantes à coupler avec la commande find sont :
Choix | Description |
---|---|
-name |
Cette option est utilisée pour spécifier le nom du fichier ou du dossier. |
-type |
Cela spécifie le type d’éléments à rechercher. |
-exec |
Le drapeau exec est utilisé pour exécuter des commandes shell sur la sortie. |
-size |
Cet indicateur filtre les éléments en fonction de leur taille d’occupation de la mémoire. |
-perm |
Cet indicateur filtre les fichiers et répertoires en fonction de leurs autorisations. |
-user |
Cet indicateur est utilisé pour rechercher des fichiers et des répertoires appartenant à un utilisateur spécifique. |
Meilleures façons d’utiliser la commande find sous Linux
La façon la plus courante de rechercher des fichiers et des répertoires avec la commande find sous Linux est avec leur nom respectif. Si vous ne connaissez pas le nom exact du fichier, la commande de recherche étant très polyvalente, elle peut être utilisée pour rechercher des fichiers même avec une partie de nom.
1. Trouver des fichiers spécifiques avec un nom correspondant
Pour rechercher des fichiers et des répertoires avec la commande find, utilisez l’indicateur -iname. L’avantage de rechercher avec cet indicateur est qu’il recherchera le nom donné en ignorant la casse du nom de fichier. La syntaxe pour utiliser la commande find avec l’indicateur -iname est :
find <location> -iname <search_name>
Par exemple, si vous souhaitez rechercher le fichier « test.txt » dans le répertoire courant, utilisez cette commande :
find . -iname "test.txt"
Ici le ‘.’ représente le répertoire courant en termes de mode d’adressage relatif pour l’emplacement du fichier. Vous pouvez même utiliser le mode d’adressage absolu pour l’emplacement du fichier à la place si vous trouvez le mode relatif difficile à comprendre.

Le drapeau « -iname » ignorera la casse des noms de fichiers. Pour rechercher des noms de fichiers correspondant exactement au nom de fichier, remplacez simplement l’indicateur -iname par l’indicateur -name :
find <location> -name <name_to_search>
2. Rechercher des fichiers par modèle de nom sous Linux
Parfois, vous devez travailler avec un fichier important mais vous ne vous souvenez pas du nom complet du fichier. Même dans cette situation, la commande find peut être votre sauveur. Utilisez simplement des caractères génériques pour faire correspondre le modèle de votre nom de fichier. Les caractères génériques essaieront alors de faire correspondre le modèle donné avec tous les noms disponibles. Supposons que vous ayez besoin de rechercher un fichier « test-101.py » dans le répertoire courant, vous pouvez utiliser la commande suivante :
Cela répertoriera les différents fichiers commençant par le nom « test » dans leurs noms de fichier, comme indiqué ci-dessous :
find . -type f -iname "test*"
Ici, le type f est ajouté pour spécifier le type d’élément de recherche en tant que fichiers. Assurez-vous également d’utiliser l’expression générique dans une paire de guillemets doubles pour éviter toute erreur.

3. Trouver des fichiers ou des répertoires avec des noms correspondants
Généralement, la commande find recherche tous les fichiers et répertoires correspondant au nom. Pour rechercher uniquement des fichiers, utilisez l’option « -type f » avec la syntaxe de base :
find <location> -type f -name <name_to_search>
Par exemple, la commande suivante affichera tous les fichiers portant le nom « test »:
find . -type f -iname "test*"

Pour rechercher uniquement des répertoires, utilisez le drapeau « -type d » comme :
find <location> -type d -iname <name_to_search>
Par exemple, la commande suivante affichera tous les répertoires portant le nom « test » :
find . -type d -iname "test*"

4. Rechercher des fichiers avec une extension spécifique
Avec la combinaison mortelle de caractères génériques et la commande de recherche, vous pouvez même rechercher des fichiers en fonction de leurs extensions. Par exemple, si vous devez rechercher un fichier de configuration dans le répertoire courant, mais que vous ne connaissez pas le nom exact, vous pouvez utiliser la commande :
find . -iname "*.conf"

5. Rechercher des fichiers et des répertoires en fonction de la taille
Lorsqu’elle est combinée avec des descripteurs de taille appropriés, vous pouvez utiliser la commande find avec l’indicateur -size pour rechercher des fichiers et des répertoires sous Linux en fonction de leur taille occupée dans la mémoire. De plus, divers descripteurs de taille peuvent également être ajoutés pour spécifier la limite de taille de fichier à rechercher.
La syntaxe de base pour rechercher des fichiers sous Linux en fonction de leur taille est :
find <location> -type <search_item_type> -size <symbol><file_size><size_descriptor>
La syntaxe ci-dessus est la même que les précédentes, à l’exception du « -size <symbol><file_size><size_descriptor>
» partie. Voici une explication pour cette partie :
- Pour la partie
vous pouvez spécifier ‘+’ ou ‘-‘ ou même la laisser vide. Ici, ‘+’ signifie rechercher les fichiers/répertoires dépassant la taille donnée, et ‘-‘ spécifie de rechercher les fichiers/répertoires inférieurs à la taille donnée. S’il est laissé vide, la commande de recherche recherchera les fichiers correspondant exactement à la taille. spécifie la taille du fichier/répertoire. <size_descriptor>
fait référence à la plage de taille de fichier que vous souhaitez rechercher.
Les différents types de descripteurs de taille que vous pouvez utiliser sont :
Descripteur de taille | Description |
---|---|
c |
Spécifie la commande de recherche pour rechercher la taille en octets |
k |
Spécifie la commande de recherche pour rechercher la taille en kilo-octets |
M |
Spécifie la commande de recherche pour rechercher la taille en mégaoctets |
G |
Spécifie la commande find pour rechercher la taille en gigaoctets |
La syntaxe ci-dessus peut sembler très compliquée pour certains utilisateurs, mais quelques exemples la rendront plus facile à comprendre.
- Si vous avez besoin d’afficher des répertoires égaux à 4 Ko dans le répertoire Documents, utilisez cette commande :
find ~/Documents -type d -size 4k

- Ou si vous manquez d’espace et avez besoin d’afficher des fichiers dépassant 100 Mo dans le répertoire Documents, utilisez cette commande :
find ~/Documents -type f -size +100M

- Si vous devez afficher des fichiers de moins de 10 Mo dans le répertoire Documents, utilisez cette commande :
find ~/Documents -type f -size -10M

- Si vous avez besoin d’afficher des fichiers vides dans le répertoire Documents, utilisez cette commande :
find ~/Documents -type f -size 0

6. Rechercher des fichiers et des répertoires correspondant à une autorisation spécifique
Les autorisations sous Linux sont de la plus haute importance sous Linux pour protéger à la fois les fichiers et les répertoires contre les accès involontaires. Pour en savoir plus, consultez notre guide complet sur les autorisations Linux.
Pour rechercher des fichiers et des répertoires en fonction de l’ensemble d’autorisations, utilisez cette syntaxe :
find <location> -type <search_item_type> -perm <permission_set>
Dans la syntaxe ci-dessus, vous pouvez utiliser soit le mode absolu d’adressage, soit le mode relatif pour <permission_set>
.
Supposons que vous ayez besoin de trouver des fichiers avec une autorisation en lecture seule pour root, utilisez cette commande :
find ~/Documents/test/ -type f -perm 400

Ou si vous souhaitez rechercher des fichiers avec des autorisations de lecture et d’écriture pour tous les utilisateurs, utilisez cette commande :
find ~/Documents/test/ -type f -perm a=r+w

7. Rechercher des fichiers et des répertoires appartenant à un utilisateur
Comme nous l’avons expliqué précédemment, vous pouvez rechercher des fichiers en fonction des autorisations définies pour le fichier avec la commande find sous Linux. Nous allons maintenant vous montrer comment afficher les fichiers appartenant à un utilisateur particulier. La syntaxe de base reste essentiellement la même, à l’exception du nouvel indicateur -user qui spécifie la commande find pour rechercher les fichiers appartenant à cet utilisateur :
find <location> -type <search_item_type> -user <username>
Par exemple, si vous voulez voir les fichiers appartenant à l’utilisateur ‘test’ dans le répertoire courant, utilisez cette commande :
find . -type f -user test

8. Utilisation de la commande find avec l’indicateur -exec
Avec l’indicateur -exec, vous pouvez exécuter des commandes shell réelles avec la commande find et ainsi booster ses fonctionnalités plusieurs fois. L’indicateur -exec exécute les commandes shell sur chaque résultat de recherche renvoyé. La syntaxe de base pour utiliser la commande find avec l’indicateur -exec est :
find <location> <options> -exec <shell_command> {} ;
Dans la syntaxe ci-dessus, les {} sont utilisés pour injecter les résultats de la recherche trouvés par la commande find dans la commande shell. Un exemple le rendra plus clair.
Supposons que vous souhaitiez copier un fichier nommé test.txt dans le répertoire courant vers /tmp/docs/, utilisez cette commande :
find . -iname renaming.sh -exec cp {} ./testing \;
Dans l’exemple ci-dessus, lorsque le « renaming.sh
” est trouvé, il est directement branché à la place du “{}
” où la procédure de copie normale est suivie. Le dernier point-virgule (;) marque la fin de la commande.

Voyons maintenant comment plusieurs fichiers sont gérés par le drapeau -exec. Supposons que vous souhaitiez déplacer tous les fichiers .pdf du répertoire actuel vers un nouveau répertoire nommé « ftesting » dans le répertoire personnel, vous pouvez utiliser cette commande :
find .-name "*.pdf" -exec mv {} ./testing + \;

Si vous souhaitez renommer à l’aide de la commande mv, consultez notre article sur la façon de renommer un fichier sous Linux où nous avons discuté de quatre méthodes différentes pour renommer des fichiers.
9. Rechercher et supprimer des fichiers et des répertoires sous Linux
Parfois, vous devrez peut-être supprimer des fichiers/répertoires spécifiques sous Linux. On pourrait penser qu’un script shell compliqué doit être écrit pour cela. Cependant, grâce à la puissance de la commande -exec, vous pouvez facilement supprimer des fichiers ou des répertoires filtrés par les commandes de recherche en fonction des règles spécifiées. La syntaxe de base pour supprimer des fichiers à l’aide de la commande find est :
find <location> <options> -type <search_item_type> -exec rm -vf {} ;
Certains utilisateurs peuvent trouver la commande ci-dessus difficile à saisir. Pour simplifier les choses, vous pouvez utiliser l’indicateur -delete au lieu de toute la partie -exec pour supprimer les éléments. La syntaxe pour supprimer des fichiers à l’aide de l’indicateur -delete avec la commande find sous Linux est :
find <location> <options> -type <search_item_type> -delete
Supprimer le fichier et le répertoire avec le nom exact
La suppression d’un fichier/répertoire fonctionne de la même manière que l’utilisation de la commande find pour le rechercher. La syntaxe pour supprimer un fichier à l’aide de la recherche est :
find <location> <options> -type <search_item_type> -name <file_to_delete> -delete
Supposons que vous souhaitiez supprimer le fichier « test.txt » dans le répertoire courant, vous pouvez utiliser cette commande comme :
find . -type f -name test.txt -delete

Supprimer les fichiers avec un nom partiellement correspondant
Si vous supprimez un fichier et que tout ce dont vous vous souvenez est une partie du nom, vous pouvez utiliser des caractères génériques pour trouver toutes sortes de noms correspondant au nom de fichier donné. La syntaxe pour supprimer les fichiers et répertoires avec un nom partiel avec la commande find sous Linux est :
find <location> <options> -type <search_item_type> -name <name_with_wildcard> -delete
Par exemple, pour supprimer tous les fichiers commençant par le nom « test », utilisez cette commande :
find . -type f -name "test*" -delete

Supprimer les fichiers avec la même extension
Lorsque vous devez supprimer tous les fichiers avec la même extension dans un répertoire, tout ce que vous avez à faire est d’ajouter le drapeau -delete à la fin. La syntaxe pour supprimer tous les fichiers avec les mêmes extensions est :
find <location> -type f -name "*.<extension>" -delete
Par exemple, si vous souhaitez supprimer tous les fichiers .pdf du répertoire courant, vous pouvez utiliser cette commande :
find . -type f -name "*.pdf" -delete
Si vous souhaitez en savoir plus sur les moyens de supprimer des fichiers et des répertoires sous Linux, consultez les articles sur la suppression d’un fichier sous Linux et sur la suppression d’un répertoire sous Linux. Nous vous recommandons de toujours exécuter d’abord la commande find sans l’indicateur de suppression. Une fois que vous êtes satisfait des résultats, vous pouvez appliquer l’indicateur -delete pour enfin supprimer les éléments.
Supprimer les fichiers et répertoires vides avec la commande find
La suppression de fichiers et de répertoires vides est assez simple. Ajoutez simplement l’indicateur -delete à la fin de la commande pour rechercher des dossiers et des fichiers vides sous Linux. La syntaxe pour supprimer les fichiers et dossiers vides est :
find <location> -type <search_item_type> -size 0 -delete
