Rechercher des fichiers avec find
Utilisation : Recherche de fichiers et dossiers en fonction de divers critères (nom, taille, date, permissions, etc.).
Syntaxe de base
find [chemin] [options] [expression]
Tableau récapitulatif
Voici un tableau récapitulatif des options les plus courantes de la commande find en Bash, avec des exemples d'utilisation :
| Option | Description | Exemple |
|---|---|---|
-name |
Recherche par nom de fichier (respecte la casse). | find /dossier -name "fichier.txt" |
-iname |
Recherche par nom de fichier (insensible à la casse). | find /dossier -iname "fichier.txt" |
-type |
Filtre par type (f pour fichier, d pour dossier). | find /dossier -type f (fichiers uniquement) find /dossier -type d (dossier uniquement) |
-size |
Filtre par taille (+ pour plus grand, - pour plus petit). | find /dossier -size +10M (fichiers > 10 Mo) |
-mtime |
Filtre par date de modification (en jours). | find /dossier -mtime -7 (modifiés il y a moins de 7 jours) |
-atime |
Filtre par date d'accès (en jours). | find /dossier -atime +30 (accédés il y a plus de 30 jours) |
-user |
Filtre par propriétaire du fichier. | find /dossier -user dominique |
-group |
Filtre par groupe propriétaire. | find /dossier -group developers |
-perm |
Filtre par permissions (ex: 644, 755). | find /dossier -perm 755 |
-exec |
Exécute une commande sur les fichiers trouvés. | find /dossier -name "*.tmp" -exec rm {} \; (supprime les fichiers .tmp) |
-delete |
Supprime les fichiers trouvés (attention, irréversible). | find /dossier -name "*.log" -delete |
-maxdepth |
Limite la profondeur de recherche. | find /dossier -maxdepth 2 -name "fichier.txt" |
-mindepth |
Ignore les niveaux de profondeur inférieurs. | find /dossier -mindepth 2 -name "fichier.txt" |
-not |
Inverse la condition (exclut les fichiers correspondant au motif). | find /dossier -not -name "*.bak" |
Exemples combinés
Pour rechercher tous les fichiers .txt modifiés il y a moins de 3 jours et appartenant à l'utilisateur dominique :
find /home/dominique -type f -name "*.txt" -mtime -3 -user dominique
Rechercher des fichiers modifiés il y a moins de 7 jours :
find . -type f -mtime -7
Rechercher des fichiers de plus de 10 Mo :
find . -type f -size +10M
Exemples lors de l'installation de serveurs
Changer les droits/permissions en utilisant la récursivité seulement pour les dossiers/fichiers en administrateur root.
Exemple pour le dossier de Nextcloud.
d = dossier/répertoire
f = fichier
find nextcloud/ -type d -exec chmod 750 {} \;
find nextcloud/ -type f -exec chmod 640 {} \;
Exemple pour WordPress (depuis le dossier d'installation du site).
. = dossier/répertoire courant
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Pour vérifier le résultat.
ls -ls