Commande Linux Locate pour les débutants (8 exemples)

Bien que find soit sans aucun doute l’un des utilitaires de ligne de commande les plus populaires ainsi que les plus puissants pour la recherche de fichiers sous Linux, il n’est pas assez rapide pour les situations où-dans vous avez besoin de résultats instantanés. Si vous souhaitez rechercher un fichier sur votre système via la ligne de commande, et que la vitesse est la priorité absolue, alors il y a une autre commande que vous pouvez utiliser : Locate.

Dans ce tutoriel, nous allons discuter de la commande locate en utilisant des exemples faciles à comprendre. Veuillez noter que toutes les instructions/exemples mentionnés ici ont été testés sur Ubuntu 16.04 LTS, et la version de locate que nous avons utilisée est 0.26.

Comment utiliser la commande locate sous Linux

La commande locate est très facile à utiliser. Tout ce que vous devez faire est de lui passer le nom de fichier que vous voulez rechercher.

locate 

Par exemple, si je veux rechercher tous les noms de fichiers qui ont la chaîne ‘dir2’ en eux, alors je peux le faire en utilisant locate de la façon suivante:

Note : La commande ‘locate dir2’ (sans astérisques) fera également l’affaire car locate remplace implicitement le nom que vous passez (disons NOM) par *NOM*.

Comment fonctionne la commande locate, ou, pourquoi est-elle si rapide

La raison pour laquelle locate est si rapide est qu’elle ne lit pas le système de fichiers pour le nom du fichier ou du répertoire recherché. Il se réfère en fait à une base de données (préparée par la commande updatedb) pour trouver ce que l’utilisateur recherche et, en fonction de cette recherche, produit sa sortie.

Bien que ce soit une bonne approche, elle a sa part d’inconvénients. Le principal problème est qu’après chaque nouveau fichier ou répertoire créé sur le système, vous devez mettre à jour la base de données de l’outil pour qu’il fonctionne correctement. Sinon, la commande ne sera pas en mesure de trouver les fichiers/répertoires créés après la dernière mise à jour de la base de données.

Par exemple, si j’essaie de trouver des fichiers dont le nom contient la chaîne ‘tosearch’ dans le répertoire ‘Downloads’ de mon système, la commande find produit un résultat dans la sortie:

Mais lorsque j’essaie d’effectuer la même recherche en utilisant la commande locate, elle ne produit aucun résultat.

Cela signifie que la base de données dans laquelle locate effectue ses recherches n’a pas été mise à jour après la création du fichier sur le système. Donc, mettons à jour la base de données, ce qui peut être fait en utilisant la commande updatedb. Voici comment faire :

sudo updatedb

Et maintenant, lorsque j’exécute à nouveau la même commande locate, elle montre des fichiers dans la sortie :

De même, après qu’un fichier ou un répertoire a été supprimé, vous devez vous assurer que la base de données locate a été mise à jour, car sinon, la commande continuera à montrer le fichier dans sa sortie lors de la recherche.

Comment faire en sorte que locate imprime le nombre ou le compte d’entrées correspondantes dans la sortie

Comme nous l’avons vu, la commande locate produit le nom des fichiers correspondants ainsi que leurs chemins complets ou absolus dans la sortie. Mais si vous le souhaitez, vous pouvez faire en sorte que l’outil supprime toutes ces informations, et n’imprime que le nombre ou le décompte des entrées correspondantes à la place. Cela peut être fait en utilisant l’option de ligne de commande -c.

Comment forcer locate à imprimer uniquement les entrées qui correspondent à des fichiers existants

Comme nous l’avons déjà abordé plus tôt dans cet article, si un fichier est supprimé du système, alors jusqu’à ce que vous mettiez à nouveau à jour la base de données locate, la commande continuera à montrer ce nom de fichier en sortie. Pour ce cas spécifique, cependant, vous pouvez sauter la mise à jour de la base de données, et toujours avoir des résultats corrects en sortie en utilisant l’option de ligne de commande -e.

Par exemple, j’ai supprimé le fichier ‘filetosearch.txt’ de mon système. Cela a été confirmé par la commande find, qui n’était plus en mesure de rechercher le fichier :

Mais lorsque j’ai effectué la même opération en utilisant locate, il affichait toujours le fichier dans la sortie :

Et nous savons pourquoi – parce que la base de données de locate n’a pas été mise à jour après la suppression du fichier. Cependant, l’utilisation de l’option -e a fait l’affaire:

Voici ce que la page de manuel de locate dit de cette option : « N’imprimez que les entrées qui font référence à des fichiers existants au moment où locate est exécuté. »

Comment faire pour que locate ignore les distinctions de casse

Par défaut, l’opération de recherche effectuée par la commande locate est sensible à la casse. Mais vous pouvez forcer l’outil à ignorer les distinctions de casse en utilisant l’option de ligne de commande -i.

Par exemple, j’ai deux fichiers sur mon système, nommés ‘newfiletosearch.txt’ et ‘NEWFILETOSEARCH.txt’. Donc, comme vous pouvez le voir, les noms de fichiers sont les mêmes, juste que leurs cas sont différents. Si vous demandez à locate de rechercher, disons, « *tosearch* », alors il ne montrera que le nom en minuscules dans sa sortie:

Mais l’utilisation de l’option de ligne de commande -i force la commande à ignorer la casse, et les deux noms de fichiers sont produits dans la sortie :

Comment séparer les entrées de sortie avec ASCII NUL

Par défaut, les entrées de sortie que la commande locate produit sont séparées par le caractère de nouvelle ligne (\n). Mais si vous voulez, vous pouvez changer le séparateur, et avoir le NUL ASCII au lieu d’une nouvelle ligne. Cela peut être fait en utilisant l’option de ligne de commande -0.

Par exemple, j’ai exécuté la même commande que nous avons utilisée dans la dernière section ci-dessus, mais j’ai ajouté l’option de ligne de commande -0:

Vous pouvez donc voir que le séparateur de nouvelle ligne n’est plus là – il a été remplacé par NUL.

Comment afficher des informations sur la base de données locate

Dans le cas où vous voulez savoir quelle base de données locate utilise, ainsi que d’autres statistiques sur la base de données, utilisez l’option de ligne de commande -S.

Comment rechercher un nom de fichier exact en utilisant locate

Par défaut, lorsque vous recherchez un nom de fichier en utilisant locate, alors le nom que vous passez – disons NOM – est implicitement remplacé par *NOM*. Par exemple, si je recherche un nom de fichier ‘testfile’, alors tous les noms correspondant à *testfile* sont produits dans la sortie:

Mais si l’exigence est de rechercher des fichiers avec des noms correspondant exactement à ‘testfile’ ? Eh bien, dans ce cas, vous devrez utiliser des expressions régulières, qui peuvent être activées en utilisant l’option de ligne de commande -r. Donc, voici comment vous pouvez rechercher juste ‘testfile’ en utilisant des expressions régulières:

locate -r /testfile$

Si les expressions régulières ne vous sont pas familières, dirigez-vous ici.

Conclusion

Locate offre beaucoup plus d’options, mais celles que nous avons discutées ici devraient suffire à vous donner une idée de base de l’utilitaire de ligne de commande, ainsi qu’à vous faire démarrer. Nous vous conseillons d’abord d’essayer toutes les options décrites ici sur votre machine Linux, puis de passer à d’autres que vous trouverez dans la page de manuel de l’outil.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.