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 lFiltrer par taille, date ou permissions
Taille :
- Plus de 100 Mo :
find / -type f -size +100M- Moins de 10 Ko :
find / -type f -size -10kDate 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 -1Permissions :
- Fichiers avec le bit SUID :
find / -perm -4000Rechercher 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 / -nogroupExé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 rmCas 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 -executable3. 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.txtMettre à jour l’index :
sudo updatedb
which
Retrouve le chemin d’une commande :
which nanowhereis
Cherche binaire, source et man page :
whereis sshConclusion
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.