Pourquoi y a-t-il deux commandes si semblables dans Linux ? et normalement quelles sont les circonstances pour utiliser chacune d'entre elles ?
Réponses
Trop de publicités?find
dans le système réel. Il est plus lent mais toujours à jour et dispose de plus d'options (taille, temps de modification,...).
locate
utilise une base de données préalablement construite (commande updatedb
). Il est beaucoup plus rapide, mais il utilise une base de données plus ancienne et ne recherche que des noms ou des parties de noms.
En tout état de cause, man find
y man locate
vous aidera davantage.
Les deux locate
y find
trouveront un fichier, mais elles fonctionnent de manière très différente.
locate
fonctionnera en mode hors ligne :
- Pour une explication simple, la base de données d'indexation de fichiers du système Unix appelée slocate énumère l'emplacement de tous les fichiers livrés avec le système Unix. Lorsque vous exécutez
locate
il utilisera cette base de données pour rechercher un fichier particulier. Le problème aveclocate
c'est si vous venez de créer un fichier que vous souhaitez rechercher, localiser ne fonctionnera pas parce que le slocate n'est pas à jour. Pour résoudre ce problème, vous pouvez utiliserupdatedb
pour mettre à jour le slocate base de données. Exécutionlocate
retrouvera le fichier nouvellement créé. C'est pourquoi de nombreux administrateurs de systèmes Linux utilisent uncron
de mettre régulièrement à jour le slocate base de données.
find
fonctionnera en ligne/"en temps réel".
- Il va en effet chercher dans tous les répertoires le fichier spécifié et examine chaque fichier un par un. Par conséquent, il nécessite de nombreux appels d'E/S.
Sur la base de la nature, il est donc clair que localiser est plus rapide que trouver, mais que trouver est en temps réel.
J'espère que cela aidera à clarifier l'idée. Tous mes vœux de réussite :)
La commande locate est une alternative à l'utilisation de find. Cette commande est souvent plus rapide et permet de rechercher facilement dans l'ensemble du système de fichiers. Vous pouvez installer la commande avec apt-get :
sudo apt-get update
sudo apt-get install mlocate
La raison pour laquelle locate est plus rapide que find est qu'il s'appuie sur une base de données des fichiers du système de fichiers. La base de données est généralement mise à jour une fois par jour à l'aide d'un script cron, mais vous pouvez la mettre à jour manuellement en tapant :
sudo updatedb
Exécutez cette commande maintenant. N'oubliez pas que la base de données doit toujours être à jour si vous voulez trouver des fichiers récemment acquis ou créés.