Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Rechercher des fichiers sous Linux

Par mis à jour le

Améliorer cette page

Vous savez qu'un fichier existe quelque part sur le serveur, mais impossible de le retrouver. Sous Linux, trois commandes répondent à ce besoin : find fouille l'arborescence en temps réel, locate interroge un index pré-construit pour aller plus vite, et grep cherche du texte à l'intérieur des fichiers. Ce guide vous montre les usages de base de chacune.

  • Trouver un fichier par nom avec find
  • Filtrer par type, taille ou date de modification
  • Rechercher instantanément avec locate
  • Chercher du texte dans un ou plusieurs fichiers avec grep
  • Choisir la bonne commande selon la situation

find parcourt l'arborescence à partir d'un point de départ et applique les critères que vous lui donnez. C'est la commande la plus puissante mais aussi la plus lente sur de gros systèmes de fichiers.

Vous donnez à find un répertoire de départ, puis le critère -name avec le nom du fichier cherché :

Fenêtre de terminal
find /etc -name "sshd_config"
Sortie
/etc/ssh/sshd_config
  • /etc : répertoire de départ de la recherche
  • -name : cherche une correspondance exacte sur le nom

Pour ignorer la casse (majuscules/minuscules) :

Fenêtre de terminal
find /home -iname "readme.md"

L'option -type filtre par type d'objet :

ValeurSignification
fFichier ordinaire
dRépertoire
lLien symbolique

Exemple, trouver tous les répertoires nommés "config" :

Fenêtre de terminal
find /etc -type d -name "config"

L'option -size filtre par taille :

Fenêtre de terminal
# Fichiers de plus de 100 Mo
find /var/log -size +100M
# Fichiers de moins de 1 Ko
find /tmp -size -1k
SuffixeUnité
cOctets
kKilo-octets
MMéga-octets
GGiga-octets

L'option -mtime compte en jours : -7 veut dire « modifié il y a moins de 7 jours », +30 « il y a plus de 30 jours ». C'est le critère du nettoyage des vieux journaux :

Fenêtre de terminal
# Fichiers modifiés dans les 7 derniers jours
find /home -mtime -7
# Fichiers modifiés il y a plus de 30 jours
find /var/log -mtime +30

locate est beaucoup plus rapide que find car il interroge une base de données pré-construite au lieu de parcourir le disque.

Fenêtre de terminal
sudo apt install plocate

Mettre à jour la base de données (se fait aussi automatiquement chaque nuit) :

Fenêtre de terminal
sudo updatedb

Chercher un fichier :

Fenêtre de terminal
locate sshd_config
Sortie
/etc/ssh/sshd_config
/usr/share/man/man5/sshd_config.5.gz

Pour ignorer la casse :

Fenêtre de terminal
locate -i readme

grep (Global Regular Expression Print) cherche une chaîne de texte à l'intérieur des fichiers. Là où find et locate recherchent par nom de fichier, grep recherche par contenu.

grep affiche les lignes entières qui contiennent le motif, et non le seul mot trouvé.

Fenêtre de terminal
grep "Port" /etc/ssh/sshd_config
Sortie
#Port 22

-i rend la recherche insensible à la casse, ce qui évite de manquer Error en cherchant error.

Fenêtre de terminal
grep -i "port" /etc/ssh/sshd_config
Fenêtre de terminal
grep "error" /var/log/*.log

Le nom du fichier apparaît devant chaque résultat :

Sortie
/var/log/auth.log:Apr 6 10:23:45 srv sshd[1234]: error: Could not load host key

L'option -r (récursif) parcourt tous les sous-répertoires :

Fenêtre de terminal
grep -r "AllowUsers" /etc/ssh/

L'option -n ajoute le numéro de ligne devant chaque résultat :

Fenêtre de terminal
grep -n "PermitRootLogin" /etc/ssh/sshd_config
Sortie
33:#PermitRootLogin prohibit-password

L'option -v affiche les lignes qui ne contiennent pas le motif, utile pour filtrer les commentaires :

Fenêtre de terminal
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"

Cette commande retire les lignes commençant par # (commentaires) et les lignes vides.

La question à se poser d'abord est ce que vous savez : le nom du fichier, ses caractéristiques, ou un mot qu'il contient. Le tableau associe chaque cas à sa commande.

BesoinCommande
Trouver un fichier par nom (résultat fiable)find /chemin -name "nom"
Trouver un fichier par nom (résultat rapide)locate nom
Filtrer par taille, type ou datefind avec -size, -type, -mtime
Chercher du texte dans un fichiergrep "motif" fichier
Chercher du texte dans tout un dossiergrep -r "motif" /chemin/

La plupart des recherches ratées viennent d'une portée trop large ou trop étroite, ou de la casse. Le tableau les classe par symptôme observé.

ProblèmeCause probableSolution
find : trop de résultatsRecherche trop largePréciser le chemin de départ ou ajouter -name
find : Permission deniedRépertoires protégésAjouter sudo ou rediriger les erreurs : 2>/dev/null
locate : fichier récent introuvableBase pas à joursudo updatedb
locate : commande introuvablePaquet non installéInstaller plocate
grep : aucun résultatCasse différenteAjouter -i pour ignorer la casse
grep : Is a directoryVous visez un dossier, pas un fichierAjouter -r pour la récursion

Entraînez-vous à localiser des fichiers avec find par nom, taille et permissions, la compétence de recherche attendue au niveau fondamental.

  • find fouille le disque en temps réel, lent mais toujours à jour et très flexible.
  • locate interroge un index, rapide mais potentiellement décalé.
  • grep cherche du texte dans les fichiers, pas le nom des fichiers.
  • Combinez-les : find pour localiser, grep pour inspecter le contenu.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn