Si je veux utiliser la locate
commande sur une machine Linux, je lance généralement d' sudo updatedb
abord pour mettre à jour la base de données. Je peux exécuter la locate
commande sur OS X 10.5 mais je ne le trouve pas updatedb
. Quelle est la mise à jour correspondante pour le mac?
234
locate
sur une boîte OS X, il vous est demandé de l'exécutersudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, il peut être plus pratique d’utiliser l’interface de ligne de commande pour Spotlightmdfind
, car la base de données Spotlight est presque toujours à jour et offre beaucoup plus de fonctionnalités que de rechercher.man mdfind
Réponses:
C'est
locate.updatedb
sur Mac.Pour plus d'informations, voir la page de manuel Locate.updatedb .
la source
man
page indique également: Elle est généralement exécutée une fois par semaine par le travail /System/Library/LaunchDaemons/com.apple.locate.plist. (Et enman locate
dit un à propos de ce script: /usr/libexec/locate.updatedb Script pour mettre à jour la base de données de localisation )sudo ionice -c3 updatedb
ce qui indiqueupdatedb
de bien partager le contrôleur i / o (io sympa) mais je ne pense pas que cette commande soit disponible sur mac. Je manque également d’avoir le-r
drapeau d’expression régulière qui peut être utilisé avec la localisation GNU, bien que je ne suis pas sûr de vouloir utiliser homebrew et d’installer la localisation GNU mentionnée par @GrogsThe locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database
Vous pouvez faire
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
pour rendre laupdatedb
commande disponible.la source
Personnellement, je viens d'installer findutils (utilisez MacPorts ou Homebrew).
Ensuite, vous devez localiser et mettre à jour GNU.
updatedb ne fonctionnera pas sans sudo.
Personnellement, je préfère avoir un utilisateur par utilisateur. si vous en avez l'habitude, d'autres utilisateurs connaîtront les noms / emplacements de tous vos fichiers.
J'ai un travail cron à exécuter:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
Et dans mon .zshrc .bashrc / .bashprofile:
export LOCATE_PATH="~/tmp/locatedb"
la source
gupdatedb
commande, pas uneupdatedb
. Malheureusement, cette commande m'a donné une erreur décrite ici (où votre réponse SO est référencée). En fin de compte, j'ai optéupdatedb
pourLC_ALL=’C’ sudo updatedb
une solution de contournement, mais je ne sais pas s'il s'agit d'une solution à long terme./opt/local/libexec/gnubin
au début de votre chemin si vous voulez que les noms d' installationcoreutils
etfindutils
installés parmacports
soient disponibles avec leurs noms d'origine (et non leursg
versions avec préfixe).Si vous exécutez localize sans mettre à jour la base de données au préalable, vous aurez une chance de voir la méthode recommandée par le système d'exploitation par sa sortie.
la source