Rechercher des fichiers avec find

De Wiki de Mémoire Vive
Aller à la navigation Aller à la recherche

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 :

Commande find : Options et Exemples
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