637 tutoriels en ligne

Créa-blog

#100JoursPourCoder
Projet Créa-code | Formation Créa-troyes

Ressources pour développeur web

Théme de la semaine : Search Console

Commande Find : Maîtriser la recherche depuis le Terminal

Temps de lecture estimé : 5 minutes
Accueil Terminal Commande Find : Maîtriser la recherche depuis le Terminal

Vous avez déjà passé de longues minutes chercher dans vos dossiers ? La bonne nouvelle, c’est que votre machine possède un super-pouvoir caché. Aujourd’hui, on oublie la souris et on plonge dans l’outil le plus puissant de votre système pour remettre de l’ordre dans votre vie numérique : la commande find dans le terminal.

  • Gagnez du temps en remplaçant vos recherches manuelles par des requêtes automatisées et ultra-précises.
  • Reprenez le contrôle total de votre espace de stockage en identifiant les fichiers volumineux ou obsolètes qui encombrent votre système.
  • Sécurisez vos manipulations de données grâce à l’apprentissage d’actions combinées capables de traiter des milliers de documents en une seule commande.

Pourquoi s’intéresser au terminal et à Find ?

Le terminal peut faire peur avec son écran noir. Pourtant, c’est un allié de taille. Imaginez que vous deviez chercher tous les fichiers JPG créés il y a plus de six mois et pesant plus de 2 Mo dans un disque dur de 1 To. À la main, c’est une mission suicide. Avec la commande find, c’est une ligne de code et trois secondes de réflexion pour votre processeur.

Utiliser le terminal pour effectuer des recherches, c’est passer du mode « spectateur » au mode « administrateur ». Vous ne subissez plus l’interface graphique, vous donnez des ordres précis. La commande find est un outil de recherche récursif, ce qui signifie qu’elle ne se contente pas de regarder dans le dossier actuel, mais qu’elle fouille dans tous les sous-dossiers comme un détective privé infatigable.

La commande find dans le terminal

La structure de base : Comment parler à Find ?

Avant de lancer des commandes complexes, il faut comprendre la grammaire de cet outil. Une instruction avec find se décompose généralement en quatre parties. C’est un peu comme une phrase : « Où chercher ? », « Quoi chercher ? », « Quels critères ? » et éventuellement « Quelle action faire ? ».

La syntaxe classique ressemble à ceci :

find [chemin] [options] [expression]

Le « chemin », c’est le point de départ.

  • Si vous mettez un point . , vous dites à l’ordinateur de chercher là où vous vous trouvez actuellement.
  • Si vous mettez /home/utilisateurs, il ira fouiller dans ce répertoire spécifique. C’est la base de tout bon usage du terminal.

Votre première recherche : Trouver par le nom

C’est l’usage le plus fréquent. Vous connaissez le nom de votre fichier, ou du moins une partie, et vous voulez savoir où il se cache. Pour cela, on utilise l’option -name.

Imaginons que vous cherchiez un fichier nommé vacances.txt. Vous taperez :

find . -name vacances.txt

Le terminal va alors lister tous les emplacements où ce nom exact apparaît. Mais attention, Linux ou macOS est pointilleux : il fait la différence entre les majuscules et les minuscules (la casse).

Si votre fichier s’appelle Vacances.txt, la commande précédente ne trouvera rien.

Pour être plus souple, utilisez -iname (le « i » pour « insensitive »). Cela permet d’ignorer la casse et de ratisser plus large.

Utiliser les jokers (Wildcards)

Parfois, on ne se souvient que du début du nom. C’est là qu’interviennent les astérisques. Si vous cherchez tous les fichiers qui commencent par « projet », vous écrirez :

find . -name "projet*"

Les guillemets sont ici indispensables pour que le terminal ne s’emmêle pas les pinceaux avec d’autres fichiers présents dans votre dossier actuel.

Filtrer par type de contenu : Fichier ou Dossier ?

Par défaut, la commande find vous sort tout : les dossiers, les fichiers, les liens symboliques… C’est parfois un peu brouillon. Pour affiner, on ajoute l’option -type.

  • Si vous voulez uniquement des fichiers : -type f (f pour file)
  • Si vous cherchez uniquement des dossiers : -type d (d pour directory)

C’est extrêmement pratique quand vous voulez, par exemple, lister tous les répertoires de configuration sans être pollué par les milliers de petits fichiers qu’ils contiennent.

La quête temporelle : Chercher selon la date avec FIND

C’est ici que la commande find devient magique. Vous vous souvenez avoir modifié un script il y a moins de deux jours, mais impossible de remettre la main dessus. Au lieu de tout ouvrir un par un, demandez au terminal.

Il existe trois options principales pour le temps :

  1. -mtime : Date de dernière modification du contenu.
  2. -atime : Date de dernier accès (lecture).
  3. -ctime : Date de changement de statut (droits, propriétaire).

Si vous cherchez un fichier modifié il y a exactement 5 jours : 

find . -mtime 5

Mais le plus utile reste les modificateurs plus + et moins -.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?
find . -mtime -2

trouvera tout ce qui a été modifié depuis moins de 48 heures. À l’inverse, +10 cherchera ce qui n’a pas bougé depuis plus de 10 jours. C’est l’outil parfait pour faire le ménage dans vos téléchargements.

La taille, ça compte : Avec find, vous pouvez filtrer par poids

Puisque nous parlions de disque plein, voyons comment cibler les fichiers selon leur poids avec l’option -size. Les unités sont simples : 

  • k pour kilo-octets, 
  • M pour méga-octets,
  • G pour giga-octets.

Pour trouver les fichiers de plus de 500 Mo qui encombrent votre espace :

find / -size +500M

Notez que j’ai utilisé / comme chemin de départ pour fouiller l’intégralité de l’ordinateur.

C’est une commande puissante qui peut prendre un peu de temps selon la vitesse de votre disque dur.

Combiner les critères : La puissance du ET et du OU

La force de la commande find réside dans sa capacité à cumuler les exigences. Vous voulez un fichier .log, modifié il y a moins de 3 jours ET pesant plus de 10 Mo ? Facile. Il suffit de coller les options les unes après les autres.

find /var/log -name "*.log" -mtime -3 -size +10M

Par défaut, quand vous listez des critères, Find considère qu’il faut qu’ils soient tous respectés (c’est l’opérateur logique « ET »). Si vous voulez faire un « OU », vous pouvez utiliser l’option -o.

Passer à l’action avec -exec

C’est sans doute la partie la plus impressionnante, mais aussi la plus délicate. La commande find peut non seulement trouver, mais aussi agir. Grâce à l’option -exec, vous pouvez dire : « Pour chaque fichier trouvé, fais ceci ».

La syntaxe est un peu particulière :

find . -name "*.tmp" -exec rm {} \;

Décortiquons cette commande :

  • rm est la commande pour supprimer.
  • {} est un espace réservé qui représente le fichier trouvé par find.
  • \; sert à dire au terminal que la commande de fin d’exécution s’arrête là.

Attention : Soyez extrêmement prudents avec cette option. Une erreur de frappe et vous pourriez supprimer des fichiers importants.

Mon conseil de pro : lancez toujours votre commande find sans le -exec d’abord pour vérifier la liste des fichiers qui vont être impactés. Une fois que vous êtes sûr de vous, ajoutez l’action.

Gérer les droits d’accès et les utilisateurs

Dans un environnement Linux, chaque fichier appartient à quelqu’un. Si vous partagez votre ordinateur ou travaillez sur un serveur, vous pourriez vouloir chercher les fichiers appartenant à l’utilisateur « julien ».

find /home -user julien

De même, vous pouvez chercher par permissions (les fameux droits de lecture, écriture, exécution). C’est très utile pour la sécurité, par exemple pour débusquer des fichiers qui seraient un peu trop « ouverts » aux quatre vents.

👉 Pour aller plus loin : Commande CHMOD : gérer les permissions

Commande find : Le tableau récapitulatif complet

Explication (ce que ça fait)Commande / Paramètre find
Lance une recherche de fichiers ou dossiersfind
Définit le dossier de départ de la recherchefind /chemin
Recherche depuis le dossier courantfind .
Recherche depuis la racine du systèmefind /
Recherche par nom exact-name "fichier.txt"
Recherche par nom sans respecter la casse-iname "fichier.txt"
Recherche avec joker (*)-name "*.php"
Recherche uniquement des fichiers-type f
Recherche uniquement des dossiers-type d
Recherche des liens symboliques-type l
Recherche des fichiers vides-empty
Recherche par extension-name "*.jpg"
Recherche par taille exacte-size 10M
Recherche des fichiers plus grands que…-size +10M
Recherche des fichiers plus petits que…-size -10M
Recherche par permissions-perm 644
Recherche par propriétaire-user nom_utilisateur
Recherche par groupe-group nom_groupe
Fichiers modifiés il y a X jours-mtime 7
Fichiers modifiés il y a moins de X jours-mtime -7
Fichiers modifiés il y a plus de X jours-mtime +7
Fichiers accédés récemment-atime
Fichiers dont les métadonnées ont changé-ctime
Limite la profondeur de recherche-maxdepth 2
Ignore les sous-dossiers-maxdepth 1
Définit une profondeur minimale-mindepth 2
Combine plusieurs conditions (ET logique)-name "*.php" -type f
Condition OU logique-name "*.jpg" -o -name "*.png"
Négation (SAUF…)! -name "*.log"
Exécute une commande sur chaque résultat-exec commande {} \;
Supprime les fichiers trouvés-delete
Affiche les résultats un par ligne(comportement par défaut)
Redirige le résultat vers un fichier> resultat.txt
Ignore les erreurs de permissions2>/dev/null

Apprivoiser la commande find, c’est un peu comme apprendre à utiliser une boussole dans une forêt dense. Au début, on tâtonne, on vérifie la syntaxe, on a peur de faire une bêtise. Mais très vite, on ne peut plus s’en passer. Le terminal cesse d’être une barrière pour devenir un accélérateur de productivité. Vous avez maintenant toutes les clés en main pour fouiller, trier et gérer vos fichiers comme un véritable expert, sans jamais avoir besoin de lever la main vers votre souris.

La prochaine fois que vous vous sentirez perdu dans vos dossiers, respirez un grand coup, ouvrez votre invite de commande et laissez la magie opérer. Le contrôle total de vos données est désormais à portée de touches.l