📖 Chapitre 45/45 — Linux : Les commandes Voir le sommaire →
← Retour
Informatique

locate - trouver un fichier en une fraction de seconde

Cédrix · 06/06/2026
Modifié le 6 juin 2026 à 10h04

find est puissant mais il parcourt le disque en temps réel — sur un gros système, ça peut prendre plusieurs secondes. locate fonctionne différemment : il consulte une base de données pré-indexée de tous les fichiers de votre système. Le résultat est quasi-instantané.

La contrepartie : cette base de données n’est pas mise à jour en temps réel. Un fichier créé il y a 5 minutes n’y sera peut-être pas encore.


La forme de base

locate nom_du_fichier

C’est tout. locate cherche dans toute sa base de données et affiche tous les chemins qui contiennent ce que vous avez tapé.

locate nginx.conf
/etc/nginx/nginx.conf
/usr/share/doc/nginx/nginx.conf.example

Remarquez que locate fait une recherche par sous-chaîne par défaut — il trouve tous les chemins qui contiennent nginx.conf, pas seulement les fichiers qui s’appellent exactement comme ça.


La base de données — ce qu’il faut comprendre

locate ne cherche pas sur le disque, il cherche dans /var/lib/mlocate/mlocate.db (ou équivalent selon votre système). Cette base est mise à jour automatiquement, généralement une fois par jour via une tâche cron.

Si un fichier récent n’apparaît pas, mettez la base à jour manuellement :

sudo updatedb

Ça prend quelques secondes, et après, locate voit les nouveaux fichiers.


Les options essentielles

-i — ignorer la casse

locate -i "readme"

Trouve README.md, Readme.txt, readme.rst... Même logique que -i dans grep.


-c — juste le nombre

locate -c "*.py"
4821

Affiche uniquement le nombre de fichiers trouvés, sans les lister. Utile pour avoir une idée rapide de la quantité.


-n — limiter les résultats

locate -n 10 "*.conf"

Arrête après 10 résultats. Pratique quand vous savez que vous allez avoir des milliers de réponses et que vous cherchez juste à confirmer que le fichier existe quelque part.


-r — utiliser une regex

locate -r "\.log$"

Cherche les chemins qui se terminent par .log. Avec -r, vous pouvez utiliser les expressions régulières standards.

locate -r "/etc/.*\.conf$"    # fichiers .conf directement dans /etc

--basename — chercher seulement dans le nom

Par défaut, locate cherche dans le chemin complet. Donc locate lib va trouver /usr/lib/python, /var/lib/apt, etc. — tout ce qui contient “lib” dans le chemin.

Avec --basename, il ne cherche que dans le nom du fichier lui-même :

locate --basename "nginx.conf"

Beaucoup plus précis quand vous connaissez le nom exact.


Combiner avec d’autres commandes

locate produit une liste de chemins — elle se prête bien au pipe.

# Chercher "TODO" dans tous les fichiers Python de votre système
locate "*.py" | xargs grep -l "TODO" 2>/dev/null

# Compter les fichiers .log par dossier
locate "*.log" | grep "/var/log" | wc -l

# Ouvrir le premier fichier trouvé
locate -n 1 "nginx.conf"

find ou locate — lequel choisir ?

Ce sont deux outils complémentaires, pas concurrents.

Situation Outil recommandé
Vous cherchez un fichier dont vous connaissez le nom locate — instantané
Le fichier a été créé très récemment find — locate ne l’a peut-être pas encore indexé
Vous cherchez par date, taille, permissions find — locate ne sait pas faire ça
Vous voulez exécuter une commande sur les résultats find avec -exec
Vous cherchez dans un dossier spécifique find — plus précis
Vous voulez juste savoir où est ce fichier locate — plus rapide

En pratique : commencez par locate pour les recherches simples par nom. Si vous avez besoin de plus de contrôle, passez à find.


Petite mise en pratique


Exercice 1 — Débutant

Trouvez tous les fichiers qui s’appellent bashrc sur votre système.

Voir la réponse
locate bashrc

Ou plus précis, uniquement sur le nom du fichier :

locate --basename "bashrc"

Exercice 2 — Débutant

Combien de fichiers .conf sont indexés sur votre système ?

Voir la réponse
locate -c ".conf"

Exercice 3 — Intermédiaire

Trouvez les 5 premiers fichiers nginx.conf sur le système, sans tenir compte de la casse.

Voir la réponse
locate -i -n 5 "nginx.conf"

Exercice 4 — Intermédiaire

Vous cherchez un fichier dont vous savez qu’il se termine par .key et qu’il est quelque part dans /etc. Trouvez-le.

Voir la réponse
locate -r "/etc/.*\.key$"

Ou plus simplement :

locate "/etc/*.key"

Exercice 5 — Avancé

La base de données n’a pas été mise à jour depuis hier et vous cherchez un fichier que vous venez de créer. Comment procéder ?

Voir la réponse

Mettez d’abord à jour la base, puis cherchez :

sudo updatedb && locate "nom_du_fichier"

Cheatsheet

Commande Ce qu’elle fait
locate nom Recherche dans toute la base
locate -i "nom" Insensible à la casse
locate -c "*.log" Compter sans afficher
locate -n 20 "motif" Limiter à 20 résultats
locate --basename "nom" Chercher sur le nom seul
locate -r "regex" Avec une expression régulière
sudo updatedb Mettre à jour la base de données

Pour aller plus loin

  • mlocate vs plocate — selon votre distribution, la commande peut être légèrement différente, mais l’usage est identique. plocate est une version plus récente et plus rapide.
  • /etc/updatedb.conf — le fichier de configuration qui définit quels dossiers sont exclus de l’indexation (par défaut : /tmp, /proc, les systèmes de fichiers réseau...).
  • locate n’existe pas sur votre machine ? Installez-le : sudo apt install mlocate (Debian/Ubuntu) ou sudo dnf install mlocate (Fedora/RHEL).
  • fd — une alternative moderne qui combine la rapidité de locate et la flexibilité de find, avec une syntaxe plus intuitive. Vaut le coup d’œil.

La documentation complète : man locate dans votre terminal.

Partager : ✉ Mail X in 🐘
Commentaires

Aucun commentaire pour l'instant. Soyez le premier !

Laisser un commentaire
Un code de vérification sera envoyé à votre adresse email.