288 votes

Quel est l'équivalent de la commande updatedb de Linux pour Mac ?

Si je veux utiliser la commande locate sur une machine Linux, je lance généralement d'abord sudo updatedb pour mettre à jour la base de données. Je peux exécuter la commande locate sur OS X 10.5 mais je ne trouve pas updatedb. Quel est l'équivalent de updatedb pour Mac?

0 votes

Well, upatedb et locate sont des fonctionnalités intéressantes mais elles nécessitent de lancer updatedb régulièrement (soit updatedb se lance régulièrement et ralentit votre système à des moments inopportuns, soit locate montre des références à des fichiers qui ne sont plus là). Je pense donc qu'au lieu de mettre en place locate/updatedb, il serait peut-être préférable de se familiariser avec (le bien plus puissant) find.

16 votes

Alors que find est utile pour beaucoup de choses, il doit passer par le système de fichiers à chaque fois. Si vous pouvez restreindre les endroits où vous cherchez, c'est bien. L'avantage de locate est qu'il garde sa propre base de données, et donc n'a pas besoin de chercher à chaque fois. C'est particulièrement important avec des systèmes de fichiers volumineux et/ou distants. Je pense que chacun a sa place.

4 votes

Lors de l'exécution initiale de locate sur un OS X, il vous dit d'exécuter sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist.

387voto

Dalroth Points 2468

C'est locate.updatedb sur Mac.

sudo /usr/libexec/locate.updatedb

Pour plus d'informations, consultez la page man de locate.updatedb.

105voto

BBP Points 1

Vous pouvez exécuter sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb pour rendre la commande updatedb disponible.

23voto

Grogs Points 381

Personnellement, je viens d'installer findutils (utilisez MacPorts ou Homebrew).

Ensuite, vous avez GNU locate et updatedb.

updatedb ne fonctionnera pas sans sudo.

Personnellement, je préfère avoir un locatedb par utilisateur; si vous utilisez sudo, les autres utilisateurs sauront les noms/emplacements de tous vos fichiers.

J'ai une tâche cron qui s'exécute :

updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'

Et dans mon .zshrc .bashrc/.bashprofile :

export LOCATE_PATH="~/tmp/locatedb"

5voto

Tankman六四 Points 409

Si vous exécutez la commande locate sans avoir mis à jour la base de données au préalable, vous avez une chance de voir la façon recommandée par le système d'exploitation à travers sa sortie.

AVERTISSEMENT : La base de données locate (/var/db/locate.database) n'existe pas.
Pour créer la base de données, exécutez la commande suivante :

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Veuillez noter que la base de données peut prendre un certain temps pour être générée ; une fois la base de données créée, ce message n'apparaîtra plus.

0voto

Iceberg Points 111

En fait, vous pouvez utiliser la commande GNU locate & update sur Mac aussi.

brew install findutils --with-default-names

export PATH="$(brew --prefix findutils)/libexec/gnubin:$PATH"
export MANPATH="$(brew --prefix findutils)/libexec/gnuman:$MANPATH"

which locate

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X