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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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 — recherche en temps réel
Section intitulée « find — recherche en temps réel »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.
Chercher par nom
Section intitulée « Chercher par nom »find /etc -name "sshd_config"/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) :
find /home -iname "readme.md"Chercher par type
Section intitulée « Chercher par type »L’option -type filtre par type d’objet :
| Valeur | Signification |
|---|---|
f | Fichier ordinaire |
d | Répertoire |
l | Lien symbolique |
Exemple — trouver tous les répertoires nommés “config” :
find /etc -type d -name "config"Chercher par taille
Section intitulée « Chercher par taille »L’option -size filtre par taille :
# Fichiers de plus de 100 Mofind /var/log -size +100M
# Fichiers de moins de 1 Kofind /tmp -size -1k| Suffixe | Unité |
|---|---|
c | Octets |
k | Kilo-octets |
M | Méga-octets |
G | Giga-octets |
Chercher par date de modification
Section intitulée « Chercher par date de modification »# Fichiers modifiés dans les 7 derniers joursfind /home -mtime -7
# Fichiers modifiés il y a plus de 30 joursfind /var/log -mtime +30locate — recherche instantanée par index
Section intitulée « locate — recherche instantanée par index »locate est beaucoup plus rapide que find car il interroge une base de données pré-construite au lieu de parcourir le disque.
Installer et utiliser
Section intitulée « Installer et utiliser »sudo apt install plocatesudo dnf install plocateMettre à jour la base de données (se fait aussi automatiquement chaque nuit) :
sudo updatedbChercher un fichier :
locate sshd_config/etc/ssh/sshd_config/usr/share/man/man5/sshd_config.5.gzPour ignorer la casse :
locate -i readmegrep — chercher du texte dans les fichiers
Section intitulée « grep — chercher du texte dans les fichiers »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.
Chercher un mot dans un fichier
Section intitulée « Chercher un mot dans un fichier »grep "Port" /etc/ssh/sshd_config#Port 22Ignorer la casse
Section intitulée « Ignorer la casse »grep -i "port" /etc/ssh/sshd_configChercher dans plusieurs fichiers
Section intitulée « Chercher dans plusieurs fichiers »grep "error" /var/log/*.logLe nom du fichier apparaît devant chaque résultat :
/var/log/auth.log:Apr 6 10:23:45 srv sshd[1234]: error: Could not load host keyChercher récursivement dans un dossier
Section intitulée « Chercher récursivement dans un dossier »L’option -r (récursif) parcourt tous les sous-répertoires :
grep -r "AllowUsers" /etc/ssh/Afficher le numéro de ligne
Section intitulée « Afficher le numéro de ligne »L’option -n ajoute le numéro de ligne devant chaque résultat :
grep -n "PermitRootLogin" /etc/ssh/sshd_config33:#PermitRootLogin prohibit-passwordInverser la recherche
Section intitulée « Inverser la recherche »L’option -v affiche les lignes qui ne contiennent pas le motif — utile pour filtrer les commentaires :
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"Cette commande retire les lignes commençant par # (commentaires) et les lignes vides.
Récapitulatif : quelle commande choisir ?
Section intitulée « Récapitulatif : quelle commande choisir ? »| Besoin | Commande |
|---|---|
| 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 date | find avec -size, -type, -mtime |
| Chercher du texte dans un fichier | grep "motif" fichier |
| Chercher du texte dans tout un dossier | grep -r "motif" /chemin/ |
Dépannage
Section intitulée « Dépannage »| Problème | Cause probable | Solution |
|---|---|---|
find : trop de résultats | Recherche trop large | Préciser le chemin de départ ou ajouter -name |
find : Permission denied | Répertoires protégés | Ajouter sudo ou rediriger les erreurs : 2>/dev/null |
locate : fichier récent introuvable | Base pas à jour | sudo updatedb |
locate : commande introuvable | Paquet non installé | Installer plocate |
grep : aucun résultat | Casse différente | Ajouter -i pour ignorer la casse |
grep : Is a directory | Vous visez un dossier, pas un fichier | Ajouter -r pour la récursion |
À retenir
Section intitulée « À retenir »findfouille le disque en temps réel — lent mais toujours à jour et très flexible.locateinterroge un index — rapide mais potentiellement décalé.grepcherche du texte dans les fichiers, pas le nom des fichiers.- Combinez-les :
findpour localiser,greppour inspecter le contenu.