Introduction
Cet aide-mémoire rassemble les utilisations les plus courantes de la commande find sous Linux. Que vous cherchiez des fichiers par nom, par taille, par date ou par permissions, vous trouverez ici les exemples pratiques pour localiser rapidement ce dont vous avez besoin dans votre arborescence de fichiers.
Syntaxe de base
find [chemin] [critères] [actions]
Exemple — chercher dans le répertoire courant :
find . -name "fichier.txt"
Chercher depuis la racine :
find / -name "fichier.txt"
Recherche par nom
Nom exact :
find . -name "fichier.txt"
Insensible à la casse :
find . -iname "fichier.txt"
Avec un joker :
find . -name "*.log"
find . -name "rapport_*"
Recherche par type
Fichiers uniquement :
find . -type f
Répertoires uniquement :
find . -type d
Liens symboliques :
find . -type l
Combiné :
find . -type f -name "*.sh"
Recherche par taille
Fichiers de plus de 100 Mo :
find . -size +100M
Fichiers de moins de 1 Ko :
find . -size -1k
Fichiers d’exactement 512 octets :
find . -size 512c
Unités disponibles : c (octets), k (Ko), M (Mo), G (Go)
Recherche par date
Modifiés dans les 7 derniers jours :
find . -mtime -7
Modifiés il y a plus de 30 jours :
find . -mtime +30
Accédés dans les dernières 24 heures :
find . -atime -1
Modifiés dans la dernière heure :
find . -mmin -60
Modifiés après un fichier de référence :
find . -newer reference.txt
Recherche par permissions
Fichiers avec les permissions exactes 644 :
find . -perm 644
Fichiers lisibles par tous :
find . -perm /o=r
Fichiers exécutables :
find . -perm /u+x
Fichiers SUID :
find / -perm -4000
Fichiers avec permission d’écriture pour tous (risque sécurité) :
find / -perm -o+w
Recherche par propriétaire
Fichiers appartenant à un utilisateur :
find . -user john
Fichiers appartenant à un groupe :
find . -group www-data
Fichiers sans propriétaire valide :
find . -nouser
find . -nogroup
Exécuter une commande sur les résultats
Afficher les détails de chaque résultat :
find . -name "*.txt" -exec ls -lh {} \;
Supprimer les fichiers trouvés :
find . -name "*.tmp" -exec rm {} \;
Version plus rapide avec + (groupe les arguments) :
find . -name "*.log" -exec rm {} +
Utiliser xargs :
find . -name "*.txt" | xargs grep "mot-clé"
Avec xargs et fichiers contenant des espaces :
find . -name "*.txt" -print0 | xargs -0 grep "mot-clé"
Combiner des critères
ET (implicite) :
find . -type f -name "*.sh" -size +1k
OU :
find . -name "*.jpg" -o -name "*.png"
Négation :
find . -not -name "*.log"
find . ! -name "*.log"
Grouper avec des parenthèses :
find . \( -name "*.jpg" -o -name "*.png" \) -size +1M
Contrôle de profondeur
Limiter la profondeur de recherche :
find . -maxdepth 2 -name "*.conf"
Partir d’une profondeur minimale :
find . -mindepth 2 -name "*.log"
Un seul niveau :
find . -maxdepth 1 -type f
Expressions régulières
Avec -regex (chemin complet) :
find . -regex ".*\.\(jpg\|png\)"
Insensible à la casse :
find . -iregex ".*rapport.*\.pdf"
Actions d’affichage
Affichage détaillé (équivalent ls -l) :
find . -name "*.sh" -ls
Afficher les chemins séparés par un octet nul :
find . -name "*.txt" -print0
Afficher avec un format personnalisé :
find . -type f -printf "%p %s\n"
Champs disponibles pour -printf :
%p chemin du fichier
%f nom du fichier
%s taille en octets
%m permissions (octal)
%u propriétaire
%t date de modification
Supprimer des fichiers
Supprimer directement avec -delete (plus rapide que -exec rm) :
find . -name "*.tmp" -delete
Supprimer les répertoires vides :
find . -type d -empty -delete
Commandes fréquentes
find . -name "*.log" # chercher par nom
find . -type f -mtime +30 -delete # supprimer les fichiers > 30j
find . -size +100M # fichiers volumineux
find / -perm -4000 -type f # fichiers SUID
find . -type d -empty # répertoires vides
find . -name "*.sh" -exec chmod +x {} + # rendre exécutables
find . -newer ref.txt -type f # modifiés après ref.txt
find . -user john -type f # fichiers de john
Options globales utiles
-maxdepth N limiter la profondeur à N niveaux
-mindepth N ignorer les N premiers niveaux
-follow suivre les liens symboliques
-xdev rester sur le même système de fichiers
-not / ! négation d'un critère
-o OU logique entre critères