Sous Linux, retrouver un fichier éparpillé dans l’arborescence peut vite devenir un casse-tête. Heureusement, la commande find
est un véritable couteau suisse pour explorer le système de fichiers selon des critères précis : nom, taille, date, permissions, propriétaire, et bien plus.
Dans cet article, nous allons voir comment rechercher un fichier sous Linux avec find
, à travers des exemples concrets, des astuces pratiques, et des cas d’usage avancés.
Pourquoi utiliser find sous Linux ?
find
est inclus dans toutes les distributions Linux. Contrairement à des outils comme locate
, qui se basent sur une base de données mise à jour périodiquement, find
interroge directement le système de fichiers en temps réel. C’est l’outil idéal pour des recherches précises et à jour.
Syntaxe de base de find
find [chemin] [critères] [options] [actions]
chemin
: point de départ (ex./
,.
ou/home/user
)critères
: filtre de recherche (ex.-name
,-size
,-type
)options
: gestion de profondeur ou d’exclusionsactions
: ce que l’on fait avec les fichiers trouvés (ex.-delete
,-exec
)
Rechercher un fichier par nom
Exactement :
find /home/user -name "rapport.txt"
Ignorer la casse :
find /home/user -iname "rapport.txt"
Avec des jokers :
find /var/log -name "*.log"
Rechercher selon le type (fichier, dossier, lien)
- Fichiers :
find /home -type f
- Répertoires :
find /etc -type d
- Liens symboliques :
find / -type l
Filtrer par taille, date ou permissions
Taille :
- Plus de 100 Mo :
find / -type f -size +100M
- Moins de 10 Ko :
find / -type f -size -10k
Date de modification :
- Fichiers modifiés il y a plus de 5 jours :
find /var/www -mtime +5
- Fichiers modifiés dans les 24 dernières heures :
find /etc -mtime -1
Permissions :
- Fichiers avec le bit SUID :
find / -perm -4000
Rechercher par propriétaire ou groupe
- Tous les fichiers appartenant à
john
:
find /home -user john
- Tous les fichiers appartenant au groupe
www-data
:
find /var -group www-data
- Fichiers sans utilisateur :
find / -nouser
- Fichiers sans groupe :
find / -nogroup
Exécuter une action sur les fichiers trouvés
Supprimer :
find /tmp -type f -name "*.tmp" -delete
Copier :
find /data -type f -name "*.txt" -exec cp {} /backup \;
Changer les droits :
find /scripts -type f -name "*.sh" -exec chmod +x {} \;
Utiliser find avec xargs
xargs
permet de traiter efficacement les résultats de find
, surtout quand il y a beaucoup de fichiers.
Exemple : supprimer des fichiers
find /oldlogs -type f -name "*.log" | xargs rm
Copie avec destination :
find /documents -type f -name "*.pdf" | xargs -I {} cp {} /archive/
Astuce : utilisez -print0
avec find
et -0
avec xargs
pour gérer les noms contenant des espaces :
find . -type f -print0 | xargs -0 rm
Cas pratiques utiles
1. Supprimer tous les fichiers de plus de 30 jours :
find /var/backups -type f -mtime +30 -delete
2. Lister les fichiers exécutables :
find /usr/bin -type f -executable
3. Lister tous les fichiers modifiés aujourd’hui :
find /home -type f -daystart -mtime 0
4. Lister tous les fichiers cachés :
find ~ -type f -name ".*"
Bonus : alternatives à find
locate
Très rapide car utilise une base de données pré-indexée :
locate monfichier.txt
Mettre à jour l’index :
sudo updatedb
which
Retrouve le chemin d’une commande :
which nano
whereis
Cherche binaire, source et man page :
whereis ssh
Conclusion
La commande find
est un indispensable de l’administration Linux. Elle permet d’automatiser des tâches, de rechercher finement selon des critères puissants, et de gagner un temps précieux. Que vous soyez débutant ou administrateur système confirmé, apprendre à bien utiliser find
est un atout essentiel dans votre boîte à outils Linux.
N’hésitez pas à expérimenter les options vues dans ce guide, et à les combiner pour créer vos propres commandes personnalisées.