Linux : Recherche de fichiers avec la commande Find
🎫 Le contenu a été validé le 2023-04-04 pour les plateformes suivantes
✅ Ubuntu 22.10
✅ Debian 11
✅ CentOS Stream 9
✅ macOS 13.2.1
La commande find
sous Linux est un outil puissant qui vous permet de rechercher des fichiers et des répertoires dans une hiérarchie de répertoires donnée en fonction de divers paramètres. Dans ce tutoriel, nous allons explorer comment utiliser la commande find et ses différentes options.
Syntaxe de base
La syntaxe de base de la commande find est la suivante :
sh
find [répertoire] [expression]
Ici, [répertoire]
est le répertoire dans lequel vous souhaitez rechercher des fichiers, et [expression]
est le critère de recherche que vous souhaitez appliquer. La commande find recherchera les fichiers et répertoires dans le [répertoire]
donné et ses sous-répertoires qui correspondent à l'[expression]
spécifiée.
Le résultat de la commande find est une liste de fichiers et de répertoires qui correspondent aux critères de recherche spécifiés. Par exemple, si vous exécutez la commande suivante :
sh
find . -name "*.txt"
Vous obtiendrez une liste de tous les fichiers avec une extension .txt
dans le répertoire courant et ses sous-répertoires :
./example.txt
./example2.txt
./subdir/example3.txt
Recherche de fichiers par nom
Pour rechercher un fichier par son nom, utilisez l'option -name
suivie du nom du fichier que vous recherchez. Par exemple, pour rechercher un fichier nommé example.txt
dans le répertoire courant et ses sous-répertoires, utilisez la commande suivante :
sh
find . -name "example.txt"
Cela recherchera tous les fichiers nommés "example.txt" dans le répertoire courant et ses sous-répertoires.
Pour rechercher tous les fichiers avec une extension spécifique, utilisez l'option -name
suivie du caractère générique *
et de l'extension que vous recherchez. Par exemple, pour rechercher tous les fichiers avec une extension .txt
dans le répertoire courant et ses sous-répertoires, utilisez la commande suivante :
sh
find . -name "*.txt"
Cela recherchera tous les fichiers avec une extension .txt
dans le répertoire courant et ses sous-répertoires.
En fait, le caractère générique *
peut être utilisé dans n'importe quelle partie du nom de fichier. Par exemple :
sh
find . -name "example*"
find . -name "*example.txt"
find . -name "*example.*"
Recherche de répertoires
Pour rechercher tous les répertoires dans le répertoire courant et ses sous-répertoires, utilisez l'option -type
suivie de d
. Par exemple, pour rechercher tous les répertoires dans le répertoire courant et ses sous-répertoires, utilisez la commande suivante :
sh
find . -type d
Cela recherchera tous les répertoires dans le répertoire courant et ses sous-répertoires.
Recherche de fichiers par date de modification
Pour rechercher tous les fichiers modifiés dans un intervalle de temps spécifique, utilisez l'option -mtime
suivie du nombre de jours. Si vous souhaitez rechercher des fichiers modifiés au cours des n
derniers jours, utilisez un nombre négatif -n
.
Par exemple, pour rechercher tous les fichiers modifiés au cours des 7 derniers jours, utilisez la commande suivante :
sh
find . -mtime -7
find . -mtime -1w
L'unité de temps par défaut pour l'option -mtime
est le jour.
Vous pouvez utiliser d'autres unités de temps sur macOS :
s
- Secondesm
- Minutesh
- Heuresd
- Joursw
- Semaines
Vous pouvez également utiliser les options
-atime
et-ctime
pour rechercher des fichiers en fonction de leur date d'accès et de création respectivement.
Recherche de fichiers par taille
Pour rechercher tous les fichiers plus grands qu'une taille spécifique, utilisez l'option -size
suivie de la taille en octets avec un signe +
. Pour rechercher tous les fichiers plus petits qu'une taille spécifique, utilisez l'option -size
suivie de la taille en octets avec un signe -
.
Par exemple, pour rechercher tous les fichiers plus grands que 10MB
dans le répertoire courant et ses sous-répertoires, utilisez la commande suivante :
sh
find . -size +10M
Cela recherchera tous les fichiers plus grands que 10MB
dans le répertoire courant et ses sous-répertoires.
Les unités de taille courantes que vous pouvez utiliser sont :
c
- Octetsk
- Kilooctets (1024 octets)M
- Mégaoctets (1024 kilooctets)G
- Gigaoctets (1024 mégaoctets)T
- Téraoctets (1024 gigaoctets)P
- Pétaoctets (1024 téraoctets)
Combinaison de critères de recherche
Vous pouvez combiner plusieurs critères de recherche pour trouver des fichiers qui correspondent à des conditions spécifiques. Par exemple, pour rechercher tous les fichiers avec une extension spécifique qui ont été modifiés au cours des 7 derniers jours, utilisez la commande suivante :
sh
find . -name "*.txt" -type f -mtime -7
Cela recherchera tous les fichiers avec une extension .txt
qui ont été modifiés au cours des 7 derniers jours dans le répertoire courant et ses sous-répertoires.
Utilisation du résultat de la commande find
Vous pouvez utiliser le résultat de la commande find de différentes manières. Voici quelques exemples :
Pour enregistrer le résultat de la commande find dans un fichier, utilisez la commande suivante :
sh
find . -name "*.txt" > files.txt
Cela enregistrera les noms de tous les fichiers avec une extension .txt
dans un fichier nommé files.txt
.
Pour utiliser le résultat de la commande find comme entrée pour une autre commande, utilisez la commande xargs
.
Par exemple, pour supprimer tous les fichiers avec une extension spécifique, utilisez la commande suivante :
sh
find . -name "*.txt" -type f | xargs rm
Pour effectuer une action sur chaque fichier trouvé par la commande find, utilisez l'option -exec
.
Par exemple, pour modifier les permissions de tous les fichiers avec une extension spécifique, utilisez la commande suivante :
sh
find . -name "*.txt" -type f -exec chmod 644 {} \;
La syntaxe de l'argument -exec
est :
sh
-exec commande {} \;
commande
est la commande que vous souhaitez exécuter sur les fichiers trouvés par find.{}
est un espace réservé qui sera remplacé par le nom du fichier trouvé par find.\;
est utilisé pour terminer la commande et signifier la fin de l'argument-exec
.
Pour compter le nombre de fichiers trouvés par la commande find, utilisez la commande wc
. Par exemple, pour compter le nombre de fichiers avec une extension spécifique, utilisez la commande suivante :
sh
find . -name "*.txt" -type f | wc -l
Conclusion
La commande find
sous Linux est un outil puissant qui vous permet de rechercher des fichiers et des répertoires en fonction de divers critères. En utilisant ses différentes options et en combinant les critères de recherche, vous pouvez rapidement trouver les fichiers et répertoires dont vous avez besoin. Vous pouvez également utiliser le résultat de la commande find de différentes manières pour effectuer des actions sur les fichiers trouvés.