Commande find de Linux : Recherche de fichiers

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous partirez à l'aventure en tant que détective numérique et apprendrez à utiliser la puissante commande find sous Linux. La commande find est un outil essentiel pour localiser des fichiers et des répertoires en fonction de divers critères. À la fin de cette aventure, vous disposerez des compétences nécessaires pour effectuer des recherches même dans les systèmes de fichiers les plus complexes avec facilité. Ce laboratoire est conçu pour les débutants, donc n'ayez pas peur si vous êtes nouveau dans le monde de Linux – nous vous guiderons étape par étape.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") subgraph Lab Skills linux/cd -.-> lab-219191{{"Commande find de Linux : Recherche de fichiers"}} linux/find -.-> lab-219191{{"Commande find de Linux : Recherche de fichiers"}} end

Prise en main de la commande find

Commençons notre travail de détective en comprenant l'utilisation de base de la commande find. Imaginez que vous recherchez une preuve cruciale sur une scène de crime numérique.

Tout d'abord, dirigeons-nous vers notre quartier général d'enquête. Sous Linux, nous utilisons la commande cd pour changer de répertoire. Tapez la commande suivante et appuyez sur Entrée :

cd /home/labex/project

Cette commande vous déplace dans le répertoire /home/labex/project, qui sera notre répertoire de travail pour ce laboratoire (lab). Si vous vous demandez à tout moment où vous vous trouvez, vous pouvez utiliser la commande pwd pour afficher votre répertoire de travail actuel.

Maintenant, utilisons la commande find pour localiser un fichier nommé "clue.txt" :

find. -name "clue.txt"

Décortiquons cette commande :

  • find est la commande que nous utilisons
  • . indique à find de commencer la recherche à partir du répertoire actuel
  • -name "clue.txt" indique à find de rechercher un fichier nommé exactement "clue.txt"

Après avoir exécuté cette commande, vous devriez voir une sortie comme celle-ci :

./evidence/clue.txt

Cette sortie nous indique qu'un fichier nommé "clue.txt" a été trouvé dans le sous-répertoire "evidence" de notre emplacement actuel. Le ./ au début du chemin signifie "à partir du répertoire actuel".

Si vous ne voyez aucune sortie, ne vous inquiétez pas! Cela signifie simplement que le fichier n'a pas été trouvé dans le répertoire actuel ni dans ses sous-répertoires. Dans une vraie enquête, cela pourrait signifier que vous devez chercher votre indice ailleurs. Vous pouvez essayer de rechercher à partir d'un autre répertoire ou vérifier que vous avez correctement tapé le nom du fichier.

Recherche de plusieurs types de fichiers

Au fur et à mesure que notre enquête se poursuit, nous devons localiser plusieurs types de fichiers de preuve. Dans cette étape, nous allons apprendre à utiliser la commande find avec des caractères génériques (wildcards) pour rechercher des fichiers ayant différentes extensions.

Utilisons la commande find pour rechercher des fichiers ayant les extensions.txt et.log :

find. -name "*.txt" -o -name "*.log"

Décortiquons cette nouvelle commande, plus complexe :

  • find. est identique à précédemment, indiquant à find de commencer la recherche à partir du répertoire actuel
  • -name "*.txt" recherche tout fichier se terminant par.txt
  • -o signifie "ou" dans la syntaxe de la commande find
  • -name "*.log" recherche tout fichier se terminant par.log

Le caractère * est un caractère générique (wildcard) qui correspond à n'importe quel nombre de caractères. Ainsi, *.txt correspond à tout fichier se terminant par.txt, quelle que soit la partie précédant l'extension. Cela est très utile lorsque vous n'êtes pas sûr du nom exact du fichier, mais que vous connaissez son extension.

Après avoir exécuté cette commande, vous devriez voir une sortie similaire à celle-ci :

./evidence/clue.txt
./evidence/new_lead.txt
./logs/system.log
./logs/recent_activity.log
./notes/interview.txt

Cette sortie nous montre tous les fichiers.txt et.log dans notre répertoire actuel et ses sous-répertoires. Chaque ligne est le chemin d'accès à un fichier qui correspond à nos critères de recherche.

Si vous voyez des fichiers différents ou moins de fichiers, ne vous inquiétez pas. L'essentiel est que vous voyiez à la fois des fichiers.txt et.log dans la sortie. Les fichiers réels peuvent varier en fonction de votre configuration spécifique.

Recherche de fichiers par taille

Dans l'étape suivante, nous allons rechercher les fichiers volumineux qui pourraient contenir des données importantes. Les fichiers volumineux peuvent être des bases de données, des archives ou d'autres éléments de preuve substantiels dans notre enquête.

Recherchons tous les fichiers de plus de 1 mégaoctet :

find. -type f -size +1M

Décortiquons cette commande :

  • find. est notre point de départ habituel
  • -type f indique à find de ne rechercher que des fichiers ordinaires (pas des répertoires ou d'autres types spéciaux)
  • -size +1M spécifie que nous voulons des fichiers de plus de 1 mégaoctet

Le + avant 1M signifie "supérieur à". Si nous voulions des fichiers de exactement 1 mégaoctet, nous utiliserions 1M, et pour des fichiers de moins de 1 mégaoctet, nous utiliserions -1M. Vous pouvez également utiliser d'autres unités de taille comme k pour les kilooctets ou G pour les gigaoctets.

Après avoir exécuté cette commande, vous devriez voir une sortie comme celle-ci :

./evidence/large_file.dat

Cette sortie nous montre qu'il y a un fichier de plus de 1 mégaoctet dans notre répertoire d'enquête. L'extension .dat indique souvent un fichier de données, qui pourrait être important dans notre enquête.

Si vous ne voyez aucune sortie, ne vous inquiétez pas! Cela signifie simplement qu'il n'y a pas de fichiers de plus de 1 mégaoctet dans le répertoire actuel et ses sous-répertoires. Dans un scénario réel, vous devrez peut-être ajuster le paramètre de taille ou chercher dans d'autres répertoires.

Recherche de fichiers récemment modifiés

En tant que détectives, nous sommes souvent intéressés par les activités récentes. Dans cette étape, nous allons apprendre à trouver les fichiers qui ont été modifiés récemment, ce qui pourrait nous fournir des pistes sur les derniers développements de notre affaire.

Recherchons les fichiers qui ont été modifiés au cours des dernières 24 heures :

find. -type f -mtime -1

Décortiquons cette commande :

  • find. et -type f nous les avons déjà vus
  • -mtime -1 est nouveau. Il indique à find de rechercher les fichiers modifiés il y a moins de 1 jour

L'option -mtime mesure le temps par incréments de 24 heures. Le -1 signifie "il y a moins de 1 jour". Si nous voulions les fichiers modifiés il y a exactement 1 jour, nous utiliserions -mtime 1, et pour les fichiers modifiés il y a plus de 1 jour, nous utiliserions -mtime +1.

Après avoir exécuté cette commande, vous pourriez voir une sortie similaire à celle-ci :

./evidence/clue.txt
./evidence/large_file.dat
./evidence/new_lead.txt
./logs/system.log
./logs/recent_activity.log
./notes/interview.txt

Cette sortie nous montre les fichiers qui ont été modifiés au cours des dernières 24 heures. Ce sont peut-être nos meilleures pistes! Chacun de ces fichiers pourrait contenir des informations récentes cruciales pour notre enquête.

Si vous ne voyez aucune sortie, cela signifie qu'aucun fichier n'a été modifié au cours des dernières 24 heures. Dans une vraie enquête, cela pourrait suggérer une période d'inactivité, ou cela pourrait signifier que nous devons élargir nos critères de recherche.

Exécution de commandes sur les fichiers trouvés

Maintenant, combinons nos compétences de détective avec une analyse médico-légale (forensic analysis). Nous allons utiliser la commande find pour localiser tous les fichiers.txt, puis utiliser la commande cat pour afficher leur contenu. C'est comme parcourir rapidement tous les documents texte que nous avons trouvés à la recherche de indices.

Voici la commande :

find. -name "*.txt" -exec cat {} \;

Cette commande semble complexe, alors décomposons-la :

  • find. -name "*.txt" nous l'avons déjà vue - elle trouve tous les fichiers.txt
  • -exec cat {} \; est nouvelle. Elle indique à find d'exécuter la commande cat sur chaque fichier qu'elle trouve
    • cat est une commande qui affiche le contenu d'un fichier
    • {} est un espace réservé (placeholder) que find remplace par chaque nom de fichier qu'elle trouve
    • \; marque la fin de la commande -exec

Après avoir exécuté cette commande, vous devriez voir le contenu de tous les fichiers.txt, quelque chose comme cela :

The suspect was last seen wearing a red hat.
New lead: Check the security camera footage from the back alley.
Witness reported hearing a loud noise at approximately 10 PM.

Chaque bloc de texte que vous voyez est le contenu d'un fichier.txt différent. Cette commande nous permet de passer rapidement en revue le contenu de tous les fichiers texte sans avoir à ouvrir chacun d'eux individuellement.

Si vous vous demandez pourquoi nous utilisons \; à la fin, c'est pour indiquer à find où se termine la commande pour -exec. Sans cela, find ne saurait pas si nous voulons faire plus avec les fichiers.

Résumé

Félicitations, détective! Dans ce laboratoire (lab), vous êtes devenu compétent avec la commande find, un outil puissant de votre boîte à outils Linux. Vous avez appris à :

  1. Rechercher des fichiers par nom
  2. Trouver plusieurs types de fichiers en utilisant des caractères génériques (wildcards)
  3. Localiser des fichiers en fonction de leur taille
  4. Identifier les fichiers récemment modifiés
  5. Exécuter des commandes sur les fichiers trouvés

Ces compétences vous seront très utiles pour gérer les fichiers, résoudre les problèmes système et oui, même résoudre des mystères numériques!

Les options supplémentaires de la commande find non couvertes dans ce laboratoire incluent :

  • -user : Rechercher les fichiers appartenant à un utilisateur spécifique
  • -group : Rechercher les fichiers appartenant à un groupe spécifique
  • -perm : Rechercher les fichiers ayant des autorisations spécifiques
  • -maxdepth : Limiter la profondeur de parcours des répertoires
  • -mindepth : Commencer la recherche à partir d'une profondeur minimale
  • -empty : Rechercher les fichiers ou répertoires vides
  • -newer : Rechercher les fichiers plus récents qu'un fichier spécifié

N'oubliez pas que la pratique fait parfait. N'hésitez pas à expérimenter avec ces commandes dans différents répertoires pour vous familiariser avec elles. Plus vous utiliserez find, plus vous découvrirez son pouvoir et sa flexibilité pour vous aider à trouver exactement ce dont vous avez besoin dans un système de fichiers complexe.