Commande Find, rechercher fichier sous Linux ?

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’exclusions
  • actions : 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *