Quelle est la différence entre 'localiser' et 'trouver' sous Linux?

41

Pourquoi existe-t-il deux commandes si similaires sous Linux? et normalement quelles sont les circonstances pour utiliser chacun d'eux?

Zhanwu
la source
6
Pour de meilleures réponses en profondeur et en complétude, voir cette réponse sous Unix & Linux .
Ce Guy brésilien

Réponses:

38

findrecherches dans le système réel. Est plus lent mais toujours à jour et a plus d'options (taille, temps de modification, ...)

locateutilise une base de données précédemment construite (commande updatedb). C'est beaucoup plus rapide, mais utilise une base de données «plus ancienne» et ne recherche que les noms ou des parties d’entre eux.

Dans tous les cas, man findet man locatevous aidera plus loin.

eumiro
la source
1
... et updatedbfaire à peu près quelque chose comme find / -type f | gzip > locate.gz.
F. Hauri
10
unix.stackexchange.com/questions/60205/… répond à cette question plus en détail.
Noisette à propos de natty
3

Les commandes locateet findtrouveront un fichier, mais leur fonctionnement sera très différent.

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 répertorie les emplacements 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 avec locateest que si vous venez de créer un fichier que vous souhaitez maintenant rechercher, la localisation ne fonctionnera pas car la base de données slocate n’est pas à jour. Pour résoudre ce problème, vous pouvez utiliser updatedbpour mettre à jour la base de données slocate . Ré-exécuter locateva maintenant trouver le fichier nouvellement créé. Ainsi, de nombreux administrateurs système Linux utilisent un crontravail pour mettre à jour régulièrement la base de données slocate .

find fonctionnera dans un mode en ligne / "en temps réel".

  • En fait, il va parcourir tous les répertoires pour trouver le fichier spécifié et examiner chaque fichier un par un. Par conséquent, cela nécessite beaucoup d'appels d'E / S.

Donc, selon la nature, il est clair que la localisation est plus rapide que la recherche, mais que la recherche est en temps réel.

J'espère que cela aidera à clarifier l'idée. Bonne chance. :)

kazi Tanvir Ahsan
la source
0

locate regarde simplement sa base de données et rapporte l'emplacement du fichier.

find n'utilise pas de base de données, il parcourt tous les répertoires et leurs sous-répertoires et recherche les fichiers correspondant au critère donné.

anchal
la source
0

Une alternative à find est la commande localize. Cette commande est souvent plus rapide et permet de rechercher facilement 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 le localiser est plus rapide que le trouver, car elle repose 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 avec 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 souhaitez rechercher des fichiers récemment acquis ou créés.

m-tech
la source