Comment Rechercher un Fichier sur Raspberry Pi ? (et le Trouver !)


Sur Raspberry Pi OS (en particulier la version lite), il n’y a pas d’outil miracle pour trouver un fichier sur votre carte SD. Et pourtant, ce serait si utile ! Pas d’inquiétude, vous pouvez tout faire en apprenant quelques commandes. Je vais tout vous montrer dans ce tutoriel, vous saurez bientôt rechercher et trouver un fichier rapidement sur Raspberry Pi.

Find, locate et grep sont trois commandes très utiles pour rechercher un fichier sur Raspberry Pi.
Elles acceptent des options permettant de localiser rapidement n’importe quel fichier dans le système de fichiers du Raspberry Pi.

Dans cet article, je vais expliquer la syntaxe de commande pour chacune, et vous donner quelques exemples, de sorte que vous puissiez les utiliser correctement.
Je vais également vous donner un conseil bonus à la fin 🙂

Toutes les commandes énumérées ici peuvent être utilisées sur la plupart des systèmes d’exploitation Linux. Il vous suffit de vous connecter à votre Raspberry Pi avec SSH, d’ouvrir une session si sur un système minimal, ou de démarrer un terminal sur Desktop.

Find

Téléchargez mon antisèche !
Format PDF pratique, avec 74 commandes à retenir pour maîtriser son Raspberry Pi.

Introduction

Find est la commande que la plupart des gens vous donneront quand vous demanderez comment chercher un fichier.
Elle est puissante et elle vous sauvera la mise la plupart du temps, puisque vous pouvez ajouter de nombreux critères pour filtrer les résultats qui vous intéressent.
Malheureusement, de nombreux critères signifient de nombreuses options à retenir lorsque vous essayez de l’utiliser.

Je vais essayer de garder cela simple, et vous donner seulement les options les plus utiles.

Exemple basique

La syntaxe de recherche est généralement formatée comme :
find [chemin] [options]
Vous pouvez supprimer le chemin pour rechercher dans le dossier actuel (récursivement), ou les options (pour afficher tous les fichiers), mais la plupart du temps vous utiliserez les deux.
En outre, lorsque vous cherchez un fichier dans l’ensemble du système de fichiers, n’oubliez pas d’utiliser sudo pour accéder aux fichiers système.

Voici un exemple simple pour clarifier :
sudo find /var -name syslog
Le résultat est :

C’est parfait si vous connaissez le nom exact d’un fichier et que vous souhaitez le localiser, mais cela ne fonctionne pas si vous n’avez qu’une partie du nom.
Si vous voulez également des fichiers contenant le mot que vous fournissez dans le paramètre,
vous pouvez utiliser l’étoile comme joker, par exemple :
sudo find /var -name *syslog
sudo find /var -name syslog*
sudo find /var -name *syslog*

La première est pour un fichier se terminant par « syslog », la seconde commençant par « syslog » et la dernière contenant « syslog ».

Et une dernière alternative pour une recherche de base, est d’utiliser l’option « -iname » plutôt que « -name ».
Elle affichera les résultats, insensible à la casse.
Si un fichier porte le nom « SYSlog » quelque part, elle le trouvera avec iname, pas avec name.

Option date

Ok, donc l’option name/iname est cool, mais que faire si je ne connais pas le nom des fichiers que je cherche ?
Eh bien, find a beaucoup d’options pour vous aider dans ce cas.
La première est de trouver des fichiers en fonction de leur date de création, d’accès ou de modification.

Elles fonctionnent toutes pareille, donc je vais vous donner toutes les options à la fois :

  • -cmin : Différence depuis la date de création en minutes
  • -ctime : Différence depuis la date de création en heures
  • -mmin : Même chose pour la modification en minutes
  • -mtime : Et la modification en jours
  • -amin : Celle-ci est pour le temps d’accès écoulé en minutes
  • -atime : Ou en jours

Pour chacune de ces options, vous pouvez spécifier un seuil et dire s’il doit être supérieur ou égal à ce seuil.
Quelques exemples seront plus clairs 🙂

  • Trouver des fichiers dans /home/pi créé il y a moins de 60 minutes :
    find /home/pi -cmin -60
  • Rechercher des fichiers dans /var/log qui n’ont pas été modifiés au cours des 3 derniers jours :
    sudo find /var/log -mtime +3

C’est très utile lorsque vous souhaitez nettoyer votre système, ou trouver un fichier que vous avez récemment créé ou modifié, mais ne vous souvenez plus à quel endroit il était.

Option taille

La dernière option est de rechercher des tailles de fichiers spécifiques. C’est aussi utile lorsque vous souhaitez libérer de l’espace disque sur votre carte SD.

Elle fonctionne presque pareil que la précédente, donc je vais directement vous donner deux exemples :

  • Trouvez des fichiers de plus de 100 Mo sur votre système :
    sudo find / -size +100M
  • Ou plus petit que 100M :
    sudo find / -size -100M
  • Ou même des fichiers vides :
    sudo find / -size 0

Excellente commande pour trouver les plus gros fichiers sur un système ou partager, et les supprimer 🙂

Aller plus loin

Comme je vous l’ai dit au début, l’idée ici n’est pas de devenir un expert de la commande find, car il y a tant de choses à dire.
Mais avec ces options, vous pouvez déjà trouver des fichiers dans la plupart des cas.
Je vais ajouter deux conseils à ceux-ci avant de passer à l’outil suivant.

  • Vous pouvez combiner plusieurs options dans la commande. Par exemple :
    sudo find /var/log -size +100M -mtime +30
    Liste tous les fichiers journaux de plus de 100M et non modifiés dans le dernier mois.
  • Vous pouvez regarder le manuel si vous êtes intéressé par d’autres options :
    man find
    Par exemple, vous pouvez exécuter une commande sur les résultats, afficher des fichiers uniquement, désactiver le mode récursif, etc.
Maîtrisez Raspberry Pi en 30 jours
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Découvrez les secrets du Raspberry Pi à travers un challenge de 30 jours.

Locate

Voyons la commande « locate » maintenant.

Introduction

Locate est une commande qui est plus facile à utiliser pour les débutants.
Je me souviens que je l’utilisais tout le temps à mes débuts sur Linux, comme je ne me rappelais jamais des options de la commande find.

La différence avec find, c’est que locate va régulièrement créer une base de données temporaire, pour trouver des fichiers rapidement (au lieu de chercher tous les fichiers à chaque nouvelle demande).

Installation

Maintenant, sur les versions système récentes, elle n’est plus incluse dans le système, donc vous devez commencer par l’installer.

Voici la commande pour l’installer sur Raspberry Pi OS :
sudo apt install mlocate

La première chose à faire après l’installation est de créer la base de données.
Voici la commande :
sudo updatedb

Je pense que cette commande se lance automatiquement tous les jours sur votre système, mais vous pouvez planifier une tâche si vous voulez la programmer quand vous le souhaitez.

Recherche simple

Une fois terminé, vous pouvez maintenant utiliser locate directement.
L’objectif principal avec locate est de trouver rapidement un fichier basé sur son nom.
Il y a quelques options, mais c’est vraiment plus simple que find.

Ainsi, la syntaxe est toujours quelque chose comme :
locate [OPTION] [SEARCH]
Vous n’avez jamais besoin sudo avec cette commande, comme la base de données est déjà créée et mise à jour avec elle.

Voici trois exemples de ce que vous pouvez faire :

  • Trouvez tous les noms de fichiers contenant votre modèle de recherche :
    locate syslog.1
    Il n’y a pas de joker ici, donc cette commande :
    locate syslog
    trouvera n’importe quel nom de fichier contenant le mot « syslog »
  • Ignorez la casse dans votre recherche :
    locate -i SysLog
  • Seuls les noms de fichiers contenant la chaîne, exclure les correspondances dans le nom du chemin :
    locate -b syslog

C’est les principales options que vous utiliserez (et probablement seulement la première). Comme vous pouvez le voir, locate est parfaite lorsque vous connaissez le nom du fichier et que vous voulez un résultat rapide, mais pas si utile dans d’autres cas.

Filtrer avec grep

Locate est limité dans les options, mais vous pouvez toujours filtrer les résultats avec d’autres commandes Linux, par exemple : grep.
Je vais donner plus de détails sur grep dans la prochaine partie, mais pour le moment, n’oubliez pas que grep est une commande que vous pouvez utiliser pour rechercher une expression. Ainsi, nous pouvons l’utiliser après locate pour afficher uniquement les lignes que nous voulons.

La syntaxe sera :
locate [FILE] | grep [EXPRESSION]

Par exemple :
locate syslog | grep /usr/bin
Ma commande « locate » me donnera trop de résultats, mais si je suis seulement intéressé par les fichiers binaires, je peux filtrer les résultats qui contiennent « /usr/bin ».

Initiation au Raspberry Pi
10% de remise aujourd'hui !
Visionnez ma formation vidéo pour démarrer du bon pied.
Découvrez le Raspberry Pi, le matériel, ses logiciels particuliers et créez vos 5 premiers projets avec moi.

Grep

La dernière commande que vous pouvez utiliser pour rechercher des fichiers est grep.
Je vous ai déjà donné l’idée générale, mais elle peut faire beaucoup plus que cela.

Introduction

Vous avez déjà appris de nombreuses façons de trouver un fichier depuis que vous lisez ceci, mais pour être absolument complet, il y a quelques petites choses qu’ils vous manquent.
Grep est un outil puissant, pour rechercher des chaînes dans un texte ou dans un fichier.

J’ai déjà expliqué les bases de cette commande que vous pouvez combiner avec n’importe quel autre pour filtrer les résultats, mais ce qui est fascinant est de regarder à l’intérieur des fichiers.

Téléchargez mon antisèche !
Format PDF pratique, avec 74 commandes à retenir pour maîtriser son Raspberry Pi.

Utilisez-la pour rechercher dans le contenu du fichier

Voici un exemple de la raison pour laquelle je l’utilise si souvent.
Supposons que vous avez un dossier avec tout votre code source, peut-être /home/pi/code. Vous êtes à la recherche de tous les fichiers utilisant une fonction que vous venez de changer (disons « send_email() »).
Vous ne pouvez pas le faire avec find ou locate, car elles recherchent juste dans les noms de fichiers ou les attributs, pas dans le contenu des fichiers.

Mais grep peut le faire !
La syntaxe que nous allons utiliser est :
(sudo) grep [OPTIONS] [SEARCH] [PATH]

sudo peut être ajouté si vous cherchez dans des dossiers système.
Ensuite, il existe de nombreuses options que vous pouvez ajouter (consultez la page man), et enfin la chaîne de recherche et le chemin sont similaires à ce que nous avons vu précédemment.

Prenons un autre exemple.
Je veux mettre à jour ma version Raspberry Pi OS, mais je ne sais pas où sont les fichiers apt à modifier pour changer le nom du dépôt (de « buster » à « bullseye » ou n’importe quel nom de version).
Vous pouvez faire une recherche sur l’ensemble du système avec :
sudo grep --color -nHr 'buster' *

Donc, les fichiers que je recherche sont dans /etc/apt, et j’ai 4 fichiers à éditer pour faire cette modification.
Voici les options que j’ai utilisées :

  • –color : met le nom du fichier et les chaînes en couleurs
  • -n : affiche le numéro de ligne pour chaque correspondance
  • -H : affiche le nom du fichier pour chaque correspondance
  • -r : utilise une recherche récursive
  • ‘buster’ :la chaîne que je recherche dans n’importe quel fichier
  • * : je recherche dans n’importe quel fichier sous mon chemin actuel (« / »)

Comme toujours, « man <command> » vous donnera toutes les options dont vous pourriez avoir besoin dans votre cas.
J’utilise souvent -v (liste des fichiers qui ne correspondent pas à l’expression de recherche), et -A/-B/-C pour afficher des lignes autour de la correspondance.

Maîtrisez Python sur Raspberry Pi
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Envie d'aller un peu plus loin que faire clignoter une LED ? Vous avez besoin de ce livre pour passer à des projets plus avancés.

Conclusion

Voilà, si vous vous souvenez de ces trois commandes, vous devriez être en mesure de trouver n’importe quel fichier sur votre Raspberry Pi.
En fait, il y a des commandes communes sur n’importe quel système Linux, de sorte que ça peut beaucoup vous aider dans d’autres situations. C’est vraiment des commandes que j’utilise presque tous les jours au travail.

Aussi, j’avais promis un bonus à la fin, mais j’en ai trois pour vous 🙂


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

  • Une autre commande qui peut être utile dans certains cas est « whereis ».
    Elle vous donnera l’emplacement d’un fichier binaire.
    Par exemple :
    whereis syslog
    Affichera uniquement l’emplacement du service, pas tous les journaux et les fichiers de documentation.
  • Si vous êtes sur Desktop, il y a aussi des outils graphiques que vous pouvez utiliser comme moteur de recherche.
    Par exemple, vous pouvez essayer Tracker ou Recoll, tous deux disponibles dans le dépôt par défaut.
  • Et enfin, n’oubliez pas que vous pouvez mélanger ces 3 commandes avec la plupart des autres commandes Raspberry Pi. Si cela vous intéresse, lisez ma sélection ici des commandes les plus utiles sur Raspberry Pi (et obtenez une feuille de triche gratuite pour se souvenir d’elles ^^)

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi en publiant des guides détaillés et des tutoriels rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec une solide expérience dans le développement web.

Recent Posts

"Maitrisez Python sur Raspberry Pi" est enfin disponible en français (10% de réduction cette semaine)

X