Commande Linux find : Recherche de fichiers

LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez endosser le rôle d'un détective numérique en apprenant à utiliser la puissante commande find sous Linux. La commande find est un outil indispensable pour localiser des fichiers et des répertoires en fonction de divers critères. À la fin de cette aventure, vous posséderez les compétences nécessaires pour explorer avec aisance les systèmes de fichiers les plus complexes. Cet atelier est conçu pour les débutants, alors ne vous inquiétez pas si vous faites vos premiers pas sous Linux : nous vous guiderons soigneusement à chaque étape.

Premiers pas avec find

Commençons notre travail d'enquête 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, rendons-nous au quartier général de notre 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 cet atelier. Si vous souhaitez savoir où vous vous trouvez à tout moment, 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"

Analysons 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 chercher un fichier dont le nom exact est "clue.txt".

Après avoir exécuté cette commande, vous devriez voir un résultat comme celui-ci :

./evidence/clue.txt

Ce résultat 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 "en partant du répertoire actuel".

Si vous ne voyez aucun résultat, ne vous inquiétez pas ! Cela signifie simplement que le fichier n'a pas été trouvé dans le répertoire actuel ou ses sous-répertoires. Dans une enquête réelle, cela pourrait signifier que vous devez chercher ailleurs. Vous pourriez essayer de chercher à partir d'un autre répertoire ou vérifier si vous avez correctement orthographié le nom du fichier.

Rechercher plusieurs types de fichiers

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

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

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

Analysons cette nouvelle commande plus complexe :

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

Le caractère * est un joker qui remplace n'importe quel nombre de caractères. Ainsi, *.txt correspond à n'importe quel fichier se terminant par .txt, peu importe ce qui précède. C'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 un résultat similaire à celui-ci :

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

Ce résultat affiche tous les fichiers .txt et .log présents dans notre répertoire actuel et ses sous-répertoires. Chaque ligne correspond au chemin d'un fichier répondant à nos critères de recherche.

Si vous voyez des fichiers différents ou moins nombreux, ne vous inquiétez pas. L'important est que vous voyiez à la fois des fichiers .txt et .log dans le résultat. Les fichiers réels peuvent varier selon votre configuration spécifique.

Trouver des fichiers par taille

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

Trouvons tous les fichiers dont la taille est supérieure à 1 mégaoctet :

find . -type f -size +1M

Analysons cette commande :

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

Le signe + devant 1M signifie "supérieur à". Si nous voulions des fichiers faisant 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 kilo-octets ou G for les giga-octets.

Après avoir exécuté cette commande, vous devriez voir un résultat tel que :

./evidence/large_file.dat

Ce résultat nous montre qu'il existe 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, ce qui pourrait être significatif pour notre enquête.

Si vous ne voyez aucun résultat, ce n'est pas grave ! 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 devriez peut-être ajuster le paramètre de taille ou chercher dans d'autres répertoires.

Trouver des fichiers récemment modifiés

En tant que détectives, nous nous intéressons souvent à l'activité récente. Dans cette étape, nous allons apprendre à trouver des fichiers qui ont été modifiés récemment, ce qui pourrait nous donner des pistes sur les derniers développements de notre affaire.

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

find . -type f -mtime -1

Analyse de cette commande :

  • find . et -type f nous sont déjà familiers.
  • -mtime -1 est nouveau. Cela indique à find de rechercher des fichiers modifiés il y a moins d'un jour.

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

Après avoir exécuté cette commande, vous pourriez voir un résultat similaire à :

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

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

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

Exécuter des commandes sur les fichiers trouvés

Maintenant, combinons nos talents de détective avec une analyse technique. 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 pour y chercher des 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à vu, elle trouve tous les fichiers .txt.
  • -exec cat {} \; est la partie nouvelle. Elle indique à find d'exécuter la commande cat sur chaque fichier trouvé.
    • cat est une commande qui affiche le contenu d'un fichier.
    • {} est un espace réservé que find remplace par chaque nom de fichier trouvé.
    • \; marque la fin de la commande passée à -exec.

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

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 en revue rapidement le contenu de tous les fichiers texte sans avoir à les ouvrir individuellement.

Si vous vous demandez pourquoi nous utilisons \; à la fin, c'est pour indiquer à find où s'arrête la commande associée à -exec. Sans cela, find ne saurait pas si nous voulons effectuer d'autres actions sur les fichiers.

Résumé

Félicitations, détective ! Dans cet atelier, vous avez acquis une solide maîtrise de la commande find, un outil puissant de votre panoplie Linux. Vous avez appris à :

  1. Rechercher des fichiers par leur nom.
  2. Trouver plusieurs types de fichiers en utilisant des caractères génériques.
  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 des fichiers, dépanner des systèmes et, bien sûr, résoudre des mystères numériques !

D'autres options de la commande find non abordées dans cet atelier incluent :

  • -user : Trouver des fichiers appartenant à un utilisateur spécifique.
  • -group : Trouver des fichiers appartenant à un groupe spécifique.
  • -perm : Trouver des fichiers avec des permissions spécifiques.
  • -maxdepth : Limiter la profondeur de l'exploration des répertoires.
  • -mindepth : Commencer la recherche à partir d'une profondeur minimale.
  • -empty : Trouver des fichiers ou des répertoires vides.
  • -newer : Trouver des fichiers plus récents qu'un fichier spécifié.

N'oubliez pas que c'est en forgeant qu'on devient forgeron. N'hésitez pas à expérimenter ces commandes dans différents répertoires pour vous familiariser avec elles. Plus vous utiliserez find, plus vous découvrirez sa puissance et sa flexibilité pour localiser exactement ce dont vous avez besoin dans un système de fichiers complexe.