Trouvez tout ce que vous voulez avec la commande find sur Linux

Oxelya
16 octobre 2025
0 vues
0 commentaires
0.0/5 (0 votes)

Find permet de trouver tout et n'importequoi sous linux, dans cet article comment l'utiliser elle et ses variantes.

Trouvez tout ce que vous voulez avec la commande find sur Linux

Cheat Sheet : Commande find sur Linux

La commande find est un outil essentiel pour tout administrateur Linux ou utilisateur avancé. Elle permet de rechercher des fichiers et répertoires selon une grande variété de critères, et de réaliser des actions automatiques sur les fichiers trouvés. Maîtriser find permet d'optimiser la gestion de fichiers, l'audit de sécurité, la maintenance du système, et même de créer des scripts puissants pour l'automatisation.

🔹 Syntaxe de base

La syntaxe générale de find est :

bash
find [chemin] [options] [expression]
  • [chemin] : le répertoire où commencer la recherche, peut être . pour le répertoire courant
  • [options] : critères de filtrage, comme le nom, le type, la taille, la date
  • [expression] : actions ou expressions logiques appliquées aux fichiers trouvés

Exemple simple :

bash
find /home/user -name 'document.txt'

Cette commande recherche un fichier nommé document.txt dans le répertoire /home/user et ses sous-dossiers.

Astuce : Pour rechercher dans tous les sous-répertoires sans afficher les erreurs de permission, utilisez :

bash
find / -name 'document.txt' 2>/dev/null

🔹 Recherche par nom, type et motif

La recherche par nom de fichier est le point de départ pour la plupart des usages.

  • Par nom exact :
bash
find /var/log -name 'syslog'
  • Par motif avec joker :
bash
find /var/log -name '*.log'
  • Par type de fichier :
bash
find /home/user -type d       # répertoires
find /home/user -type f       # fichiers
find /home/user -type l       # liens symboliques
  • Combiner nom et type :
bash
find /home/user -type f -name '*.conf'

Cette combinaison permet de cibler uniquement certains types de fichiers pour des opérations ultérieures.

🔹 Recherche par taille et date

find excelle dans le filtrage selon la taille et les dates, ce qui est utile pour le nettoyage de fichiers ou la gestion des archives.

  • Par taille :
bash
find / -size +100M       # fichiers > 100 Mo
find / -size -10k        # fichiers < 10 Ko
  • Par date de modification :
bash
find /home/user -mtime -7   # modifiés dans les 7 derniers jours
find /home/user -mtime +30  # modifiés il y a plus de 30 jours
  • Par date d'accès ou création :
bash
find /home/user -atime -1    # consultés dans les dernières 24h
find /home/user -ctime -5    # changés dans les 5 derniers jours

Astuce : Pour automatiser la suppression des anciens fichiers volumineux :

bash
find /var/log -type f -size +500M -mtime +60 -delete

Cette commande supprime tous les fichiers de plus de 500 Mo qui n'ont pas été modifiés depuis 60 jours.

🔹 Recherche par permissions et propriétaire

Pour l'audit de sécurité, il est souvent nécessaire de filtrer selon les permissions ou le propriétaire :

  • Par permissions exactes :
bash
find /home/user -perm 644    # fichiers avec permissions exactes
find /home/user -perm -u+x   # fichiers exécutables par le propriétaire
  • Par propriétaire ou groupe :
bash
find /var/www -user www-data
find /var/www -group www-data
  • Combinaison permissions et type :
bash
find /home/user -type f -perm -o+w   # fichiers ordinaires accessibles en écriture par tous

Astuce : pour détecter les fichiers à risque sur le système, recherchez les fichiers exécutables possédant le bit setuid :

bash
find / -perm -4000 -type f 2>/dev/null

🔹 Actions sur les fichiers trouvés

L'un des points forts de find est la possibilité d'effectuer des actions sur les fichiers trouvés :

  • Exécuter une commande sur chaque fichier :
bash
find /tmp -name '*.tmp' -exec rm -f {} \;
  • Exécuter sur plusieurs fichiers simultanément :
bash
find /tmp -name '*.tmp' -exec rm -f {} +
  • Afficher uniquement le chemin :
bash
find /home/user -name '*.conf' -print

Astuce : Pour vérifier avant de supprimer, utilisez -ok à la place de -exec :

bash
find /tmp -name '*.tmp' -ok rm {} \;

Chaque fichier trouvé vous demande confirmation avant suppression.

🔹 Filtrage combiné et expressions logiques

find permet des combinaisons logiques complexes :

  • ET logique (par défaut) :
bash
find /home/user -type f -name '*.log' -size +1M
  • OU logique :
bash
find /home/user -name '*.log' -o -name '*.txt'
  • Négation :
bash
find /home/user ! -name '*.bak'
  • Combinaison avancée :
bash
find /home/user \( -name '*.log' -o -name '*.txt' \) -mtime -7

Cette commande recherche tous les fichiers .log ou .txt modifiés dans la dernière semaine.

🔹 Recherche récursive avec profondeur

  • Limiter la profondeur :
bash
find /home/user -maxdepth 2 -name '*.txt'
  • Ignorer certains répertoires :
bash
find /home/user -path './backup' -prune -o -name '*.txt' -print

Ces options sont essentielles pour optimiser la recherche dans de grandes structures de dossiers et éviter de parcourir des répertoires inutiles.

🔹 Utilisation avec d'autres commandes

  • Combiner avec xargs pour traitement rapide :
bash
find /tmp -name '*.log' | xargs gzip
  • Filtrage avancé avec grep :
bash
find /var/log -type f -name '*.log' -exec grep 'error' {} \;
  • Combiner avec tar ou zip pour archivage :
bash
find /home/user -name '*.txt' -exec tar -rvf archive.tar {} +

Ces techniques permettent d'intégrer find dans des pipelines puissants pour administration système, archivage automatique, et analyse de logs.

🔹 Astuces avancées

  • Supprimer automatiquement les fichiers anciens :
bash
find /tmp -type f -mtime +30 -delete
  • Chercher fichiers vides :
bash
find /home/user -type f -empty
  • Rechercher et archiver :
bash
find /home/user -type f -name '*.txt' -exec tar -rvf archive.tar {} +
  • Recherche approximative avec findfuzzy :
bash
findfuzzy /home/user 'documnt.txt'

La commande findfuzzy permet de trouver des fichiers dont le nom est proche de la chaîne recherchée, pratique pour corriger fautes de frappe, gérer des variantes de noms ou retrouver des fichiers dont on ne se souvient pas du nom exact.

  • Combiner findfuzzy avec grep pour filtrer le contenu :
bash
findfuzzy /home/user 'report' | xargs grep '2025'
  • Recherche de fichiers similaires dans plusieurs dossiers :
bash
findfuzzy /home/user /data 'config.yaml'

Cette approche est particulièrement utile pour la migration de données ou analyse de fichiers similaires.

🔹 Optimisation et bonnes pratiques

  • Utiliser 2>/dev/null pour supprimer les erreurs de permission lors de recherches sur tout le système.
  • Prioriser la recherche dans les répertoires les plus probables pour réduire le temps de recherche.
  • Préférer -exec ... {} + plutôt que -exec ... {} \; pour exécuter des commandes sur plusieurs fichiers simultanément, ce qui améliore les performances.
  • Pour de grandes bases de fichiers, combiner find et locate : utilisez updatedb pour que locate ait un index récent, et compléter avec find pour des critères plus complexes.

🔹 Ressources complémentaires

  • man find : documentation officielle
  • Tutoriels avancés sur expressions logiques, actions, et optimisation des recherches
  • Documentation et guides sur findfuzzy pour recherche approximative, gestion des noms similaires et intégration dans des scripts d'automatisation
Noter cet article
Donnez votre avis sur cet article
Connectez-vous pour noter

Commentaires (0)

Connectez-vous pour ajouter un commentaire

Aucun commentaire pour le moment. Soyez le premier à commenter !