Linux / Commande locate : rechercher des chemins dans un index
locate retrouve rapidement des chemins dans une base de données de noms de fichiers construite à l'avance. Cette recherche évite un nouveau parcours du disque, mais elle peut manquer un fichier récent ou conserver le nom d'un fichier supprimé. Pour connaître l'état présent d'un dossier, utilisez find ; pour explorer rapidement un index, utilisez locate en tenant compte de sa date de mise à jour.
Selon la distribution, le nom locate est fourni par plocate, mlocate ou GNU locate. Vérifiez locate --version et locate --help avant d'utiliser une option particulière. Les règles de recherche de plocate et le manuel de son outil updatedb précisent les comportements décrits pour cette implémentation.
Rechercher un nom ou une partie de chemin
La syntaxe habituelle est locate [OPTION]... MOTIF.... Une chaîne ordinaire comme nginx.conf recherche cette suite dans les chemins indexés ; le résultat peut donc venir du nom du fichier ou du nom d'un de ses dossiers parents.
locate nginx.conf
locate -i readme.md
locate -l 20 cache
Le premier appel affiche les chemins correspondants présents dans l'index, sans garantir qu'un fichier nginx.conf existe sur toutes les machines. -i ignore la casse selon la locale et les limites de l'implémentation. -l 20 arrête la recherche après vingt correspondances ; ce n'est pas la preuve qu'il n'y en a que vingt.
Avec plocate, plusieurs motifs sont combinés par « et » : un chemin doit les satisfaire tous. mlocate utilise par défaut « ou », sauf avec -A. Si vous passez plusieurs arguments, vérifiez cette règle pour ne pas conclure à tort qu'un fichier manque.
Choisir entre sous-chaîne, motif de nom et expression régulière
Dans plocate, un motif sans caractère générique est recherché comme une sous-chaîne. Dès qu'il contient un caractère générique non protégé, comme * ou ?, il devient un motif de nom de fichier. Gardez ces motifs entre guillemets pour que le shell ne les développe pas à partir du dossier courant avant l'appel de locate.
locate -b '*.service'
locate -b -r '^hosts$'
locate -c cache
-b fait porter la comparaison uniquement sur le dernier composant du chemin, tout en affichant le chemin complet. Le premier exemple cherche donc des noms finissant par .service. Dans les versions prenant en charge -r, le deuxième cherche le nom exact hosts grâce aux ancres ^ et $. Avec plocate, -r emploie les expressions régulières POSIX de base et force un parcours de l'index, généralement plus coûteux qu'une recherche ordinaire.
-c affiche un nombre au lieu des chemins. Si vous le combinez avec une limite, le nombre peut être plafonné : ne l'interprétez pas comme le total de toutes les correspondances. Pour un script qui transmet des noms à un autre outil, vérifiez aussi la disponibilité de -0, qui sépare les résultats par un octet nul et évite l'ambiguïté des noms contenant un retour à la ligne.
Comprendre les résultats absents ou périmés
L'index est une photographie des noms connus lors de sa construction. Un fichier ajouté depuis peut être absent ; un chemin supprimé ou déplacé peut encore figurer dans la base. La commande suivante ajoute un contrôle d'existence aux résultats déjà indexés :
locate -e '*.service'
-e élimine les entrées qui ne correspondent plus à un chemin existant au moment de la requête. Il ne découvre pas les nouveaux fichiers absents de la base. Les détails concernant les liens symboliques varient entre implémentations ; plocate ne les suit pas pour ce contrôle par défaut. Un résultat reste également susceptible de changer après sa vérification.
Si vous venez de créer un fichier dans votre dossier personnel, cherchez-le directement dans un point de départ précis :
find "$HOME" -name 'nginx.conf' -print
Ce parcours examine l'état courant des dossiers accessibles sous votre répertoire personnel. Il peut afficher des erreurs de permission et ne recherche pas ailleurs. Une sortie vide de locate, à elle seule, ne démontre donc ni l'absence du fichier sur le disque ni l'absence d'un logiciel installé.
Mettre à jour l'index sans ignorer ses exclusions
updatedb construit ou actualise la base. Sur une installation qui dispose d'un index système et dont vous administrez la machine, la commande habituelle est :
sudo updatedb
Vérifiez d'abord le programme updatedb installé et la planification de votre distribution. Une mise à jour peut parcourir de nombreux dossiers et produire des entrées/sorties importantes ; les systèmes qui automatisent déjà cette tâche n'ont pas besoin d'une relance à chaque recherche. Attendez la fin de la commande, puis refaites la même requête pour comparer le résultat.
Un fichier peut rester absent après cette opération si son dossier, son nom ou son système de fichiers est exclu. Dans plocate, les réglages de /etc/updatedb.conf et les options de pruning déterminent les exclusions. Consultez la configuration et la documentation locale avant de les modifier ; un disque amovible ou un montage réseau peut volontairement ne pas être indexé.
Les règles de visibilité des chemins dépendent de la base et de ses permissions. Une base personnelle peut exposer les noms qu'elle contient à toute personne capable de la lire. Conservez-la dans un emplacement correctement protégé et ne supposez pas que les permissions du fichier recherché suffisent à protéger les noms stockés dans un index.
Options et outils à choisir selon le besoin
| Option ou outil | Usage | À vérifier |
|---|---|---|
locate -i MOTIF |
Recherche sans distinction de casse. | La locale et les règles Unicode de l'implémentation. |
locate -b MOTIF |
Compare uniquement le nom final. | Le motif et ses guillemets. |
locate -e MOTIF |
Vérifie l'existence des entrées indexées. | Ne découvre pas les noms ajoutés depuis la mise à jour. |
locate -d BASE MOTIF |
Utilise une base choisie. | Son format, sa date, ses permissions et sa compatibilité. |
find |
Parcourt les dossiers choisis et teste leurs fichiers actuels. | Le point de départ, les permissions et le coût du parcours. |
which / whereis |
Repère un exécutable ou les fichiers associés à une commande. | Leurs chemins de recherche répondent à une autre question. |
La recherche d'exécutable avec which s'appuie sur PATH, tandis que whereis recherche binaires, sources et manuels dans des emplacements connus. Pour explorer des noms de fichiers sans refaire un parcours, locate reste adapté, à condition de contrôler la fraîcheur et la portée de son index.
Questions fréquentes
Pourquoi la commande locate est-elle introuvable ?
Elle n'est pas installée par défaut sur tous les systèmes. Consultez les paquets proposés par votre distribution, notamment plocate ou mlocate, puis vérifiez quel exécutable fournit le nom locate.
Pourquoi un fichier récent manque-t-il encore après updatedb ?
Contrôlez que la requête lit la base mise à jour, puis les exclusions, le motif et les règles de visibilité. Utilisez find depuis le dossier connu pour examiner immédiatement son état actuel.
Faut-il toujours sudo pour construire une base ?
L'index système requiert généralement des privilèges élevés. Certaines implémentations permettent aussi un index limité à un dossier utilisateur ; il faut alors choisir son fichier de sortie et protéger son accès.
La référence des commandes Linux par tâche regroupe les autres commandes de recherche utiles.




