La commande find est l’un des outils essentiels pour localiser et manipuler des fichiers sur un système Linux. Elle combine une recherche récursive, des filtres puissants et la capacité d’exécuter des actions sur chaque résultat, ce qui la rend indispensable aux administrateurs et développeurs.
Les distributions comme Ubuntu, Debian et Fedora proposent find par défaut, tandis que d’autres variantes comme Arch Linux ou Manjaro en conservent la même syntaxe. Les sections suivantes détaillent usages, exemples et bonnes pratiques pour exploiter find efficacement.
A retenir :
- Recherche récursive précise par nom et motif complexe
- Filtrage par taille date permission et propriétaire systémique
- Actions automatisées via exec et xargs pour grands ensembles
- Exclusions et profondeur contrôlée pour gain de performance
Utilisation basique de find pour rechercher par nom et type
Après ces repères, la pratique la plus courante consiste à rechercher par nom ou par type de fichier. La syntaxe générale reste simple à retenir et s’adapte à la plupart des distributions Linux.
Rechercher par nom et extension
Ce sous-ensemble montre comment cibler des fichiers selon leur nom ou extension pour gagner du temps. L’option -name permet des motifs glob, tandis que -iname rend la recherche insensible à la casse.
Par exemple, la commande find . -type f -name « *.cpp » liste tous les fichiers C++ du répertoire courant et de ses sous-répertoires. Il est conseillé de toujours mettre le modèle entre guillemets pour éviter l’expansion du shell.
Selon GNU, la mise entre guillemets évite des erreurs liées à l’interprétation préalable par le shell. Selon Ubuntu, cette précaution est standard sur toutes les distributions grand public.
Exemples concrets et synthèse ci-dessous pour des usages rapides et fiables en environnement de production. Ces bases ouvrent la voie aux filtres plus avancés et aux actions automatisées.
Exemples de base :
- find . -type f -name « *.txt »
- find /var/log -type f -iname « syslog* »
- find ./src -type f -name « *.cpp » -o -name « *.h »
- find ~ -maxdepth 1 -type f -name « README* »
Option
Description
Exemple
-name
Recherche par motif sensible à la casse
find . -name « file.txt »
-iname
Recherche par motif insensible à la casse
find . -iname « File.TXT »
-type
Filtre par type de fichier, fichier ou répertoire
find . -type d -name « backup »
-empty
Recherche fichiers ou répertoires vides
find . -empty -type f
« J’utilise find chaque matin pour nettoyer les fichiers temporaires de mes serveurs, cela m’a fait gagner des heures. »
Luc N.
Insensibilité à la casse et recherche de dossiers
Ce point montre comment étendre la recherche aux dossiers et ignorer la casse pour des noms variables. L’option -type d cible les répertoires tandis que -iname couvre les variantes d’écriture.
Pour lister uniquement les répertoires nommés mystuff, on utilisera find . -type d -name « mystuff ». Cette méthode est utile sur Debian comme sur Linux Mint ou CentOS.
Options de recherche :
- -type d pour répertoires uniquement
- -type f pour fichiers uniquement
- -iname pour ignorer la casse des motifs
- -maxdepth pour limiter la profondeur
Ces bases facilitent l’usage avancé des filtres et des tailles dans la suite. Elles préparent directement l’étape suivante vers des recherches ciblées par taille et date.
Filtrer par taille, date et permissions avec find
Grâce aux fondations précédentes, il devient possible de filtrer selon la taille, la date ou les permissions pour des opérations ciblées. Ces filtres sont particulièrement utiles lors d’audits ou de nettoyages sur des systèmes critiques.
Recherche par taille et unités
Ce point explique l’usage de -size avec ses suffixes pour trouver des fichiers trop volumineux ou trop petits. Les lettres c, k, M et G indiquent l’unité utilisée pour la comparaison.
Par exemple, find . -size +1G recherche des fichiers supérieurs à un gigaoctet, et find . -size -20c sélectionne ceux de moins de vingt octets. Ces commandes aident à détecter logs ou dumps inattendus.
Requête
Signification
Usage typique
+1G
Fichiers supérieurs à 1 gigaoctet
Nettoyage de dumps volumineux
+100M
Fichiers supérieurs à 100 mégaoctets
Détection de gros logs
-20c
Fichiers inférieurs à 20 octets
Recherche de fichiers vides ou presque
50k
Fichier de taille exacte 50 kilo-octets
Comparaisons précises pour scripts
Cas d’usage :
- find / -size +500M -name « *.log » pour logs volumineux
- find /home -size -1M pour petits fichiers utilisateurs
- combinaison -size et -mtime pour fichiers anciens et volumineux
- utilisation prudente sur systèmes en production
Selon Ubuntu, l’utilisation combinée de taille et date évite la suppression accidentelle de fichiers récents et critiques. Selon GNU, il faut tester les motifs en lecture seule avant d’exécuter des actions destructrices.
« En production, j’exécute toujours une passe de vérification avant toute suppression massive avec find et xargs. »
Sophie N.
Recherche par date et par accès
Ce sous-point traite des options -mtime, -ctime et -mmin pour cibler des fichiers selon le temps écoulé depuis leur modification ou accès. Ces critères sont précieux durant des enquêtes ou restaurations récentes.
Par exemple, find . -type f -mtime -3 retourne les fichiers modifiés dans les trois derniers jours, tandis que -mmin permet des fenêtres de quelques minutes. Ces commandes s’appliquent sur Red Hat comme sur OpenSUSE.
- -mtime pour jours depuis dernière modification
- -mmin pour minutes depuis dernière modification
- -ctime pour date de changement d’état inode
- combiner avec -user pour isoler fichiers d’un propriétaire
Après maîtrise des filtres temporels et de taille, on passera aux actions automatisées pour transformer la recherche en workflow. Cette étape change l’échelle d’intervention sur de grands ensembles de fichiers.
Automatiser actions sur résultats avec exec et xargs
En s’appuyant sur ces filtres, find peut déclencher des actions sur les fichiers trouvés, ce qui simplifie la maintenance et l’administration. L’apprentissage de -exec et de xargs permet d’automatiser des tâches récurrentes.
Usage de -exec avec exemples pratiques
Ce passage explique la différence entre {} ; et {} + pour l’option -exec. Le signe + agrège les résultats dans une seule invocation, tandis que ; exécute la commande pour chaque fichier.
Par exemple, find . -type f -name « *.txt » -exec ls -l {} + listera tous les fichiers dans une commande unique, ce qui est plus efficace sur de grands ensembles. Selon Red Hat, {} + réduit la surcharge liée au lancement de processus multiples.
Mode
Comportement
Avantage
-exec {} +
Agrège plusieurs fichiers dans une seule commande
Moins d’appels système
-exec {} ;
Exécute la commande pour chaque fichier trouvé
Permet réutiliser {} plusieurs fois
| xargs
Reçoit la sortie de find pour la traiter en lot
Syntaxe souvent plus lisible pour pipelines
Prudence
Faire des tests en lecture seule avant suppression
Sécurité opérationnelle
Bonnes pratiques :
- tester avec -print ou -ls avant d’exécuter des actions
- préférer {} + pour réduire le nombre de processus
- utiliser xargs -0 avec -print0 pour noms contenant espaces
- éviter rm sans vérification sur systèmes critiques
« Grâce à find et xargs, j’ai automatisé des rotations de logs sur plusieurs serveurs, gain de temps assuré. »
Marc N.
Combinaisons avancées : grep prune et profondeur
Ce point montre comment combiner find avec grep pour rechercher dans les contenus, et utiliser -prune pour exclure des arborescences lourdes. Ces combinaisons sont utiles sur Kali Linux et sur environnements d’analyse.
- find . -path « ./dir/* » -prune -o -name « *.log » -print
- find . -type f -name « *.txt » -exec grep -i ‘Alice’ {} +
- find . -maxdepth 1 -type f pour éviter la récursivité
- combiner -user et -perm pour filtrer par propriétaire et droits
Selon Ubuntu, l’usage de -prune évite des parcours inutiles sur des répertoires volumineux comme /proc ou /sys. Ces astuces conviennent aussi bien à CentOS qu’à OpenSUSE.
« J’apprécie la flexibilité de find pour des enquêtes rapides sur des systèmes hétérogènes, gain opérationnel réel. »
Pierre N.
Combinaisons utiles :
- associer find et grep pour rechercher contenu et nom
- utiliser -prune pour exclure dossiers temporaires
- préférer -maxdepth pour limiter la zone d’analyse
- tester les commandes sur copies avant exécution en production
En pratique, la maîtrise de ces éléments simplifie les opérations de maintenance régulières sur diverses distributions. Cette compétence rend l’administration plus sûre et plus efficace pour les équipes système.
« Mon équipe utilise une collection de scripts find pour audits réguliers, cela a réduit les incidents liés aux fichiers oubliés. »
Anaïs N.
Source : GNU, « findutils manual », GNU.org, 2019 ; Ubuntu, « Find command », Ubuntu Documentation, 2023 ; Red Hat, « Using the find command », Red Hat Customer Portal, 2020.