Description
Programme permettant de localiser des fichiers sur le système en se basant sur des critères tels que le nom, les attributs, la date de modification ou le propriétaire.
Options de recherche
| Option | Fonction |
|---|---|
| -name | Rechercher par nom de fichier, compatible avec les expressions régulières |
| -iname | Recherche insensible à la casse (la recherche par défaut y est sensible) |
| -size | Filtrer par taille : plus grand (+), plus petit (-) |
| chemin | Répertoire de recherche (par défaut, le répertoire courant) |
| -group | Rechercher par groupe d'appartenance |
| -user | Rechercher par propriétaire (utilisateur) |
| -type | Filtrer par type de fichier (d pour répertoire, f pour fichier ordinaire) |
| -mtime | Rechercher selon la date de modification du contenu |
| -perm | Rechercher selon les permissions du fichier |
| -a | Opérateur ET logique (ex: plus de 2M et moins de 4M) |
| -o | Opérateur OU logique |
| -prune -o | Exclure des chemins de la recherche. Exemple : find / -path "/media" -prune -o -name config (exclut le répertoire /media) |
| xargs | Passer les résultats à une autre commande pour traitement (ex: suppression). Peut être combiné avec grep pour chercher dans le contenu des fichiers. |
| -exec | Exécuter une commande sur chaque fichier trouvé (ex: suppression). |
Exemples pratiques
Lister tous les fichiers d'un répertoire utilisateur
Affiche récursivement tout le contenu de /home/jean.
$ find /home/jean
/home/jean
/home/jean/documents
/home/jean/documents/rapport.pdf
/home/jean/images
/home/jean/images/vacance.jpg
Recherche par nom avec motif
Trouve tous les fichiers dont le nom contient "photo".
$ find /home -name '*photo*'
/home/jean/images/vacance_photo.jpg
/home/jean/bureau/photo_souvenir.png
Recherche avec exclusion d'un répertoire
Cherche dans tout le système en ignorant le dossier /proc.
$ find / -path "/proc" -prune -o -name "auth.log" -print
/var/log/auth.log
Afficher les détails des fichiers trouvés
Combine la recherche avec la commande ls pour obtenir des informations détaillées.
$ find /var/log -name '*.log' -ls
-rw-r----- 1 syslog adm 45210 Mar 5 09:15 /var/log/syslog
Supprimer des fichiers temporaires
Supprime tous les fichiers nommés tmp_*.bak dans le répertoire /tmp.
$ find /tmp -name "tmp_*.bak" -type f -print0 | xargs -0 /bin/rm -f
Recherche et suppression avec -exec
Supprime tous les fichiers se terminant par .tmp en ignorant la casse.
$ find /tmp -iname "*.tmp" -exec rm -f {} \;
Chercher du texte dans les fichiers trouvés
Recherche la chaîne "192.168" dans tous les fichiers de configuration sous /etc.
$ find /etc -name "*.conf" -type f | xargs grep "192\.168"
/etc/network/interfaces: address 192.168.1.10
/etc/hosts:192.168.1.1 server-local
Autres exemples de combinaisons courantes
$ find /home -mtime -7 -name "*.txt" # Fichiers txt modifiés dans les 7 derniers jours
$ find / -user root -group root -type f # Fichiers appartenant à root:root
$ find . -perm -644 -type f # Fichiers avec au moins les permissions 644
$ find . -size +100M -exec du -sh {} \; # Afficher la taille des fichiers de plus de 100Mo
$ find . -name "*.py" -exec python3 -m py_compile {} \; # Compiler les fichiers Python trouvés
Consultez la page de manuel (man find) pour une liste exhaustive des options et opérateurs.