Mac 上 Linux 的 updatedb 命令的等价物是什么?

Thi*_*Lam 259 linux mac locate macos

如果我想locate在 Linux 机器上使用该命令,我通常会sudo updatedb先运行更新数据库。我可以locate在 OS X 10.5 上运行该命令,但我找不到updatedb. mac对应的updateb是什么?

Joh*_*n T 356

locate.updatedb在 Mac 上。

须藤/usr/libexec/locate.updatedb

有关更多信息,请参见locate.updatedb 手册页

  • 该“手册”页面还声称:*它通常由 /System/Library/LaunchDaemons/com.apple.locate.plist 作业每周运行一次。*(并且“man locate”告诉一个关于该脚本的信息:*/usr /libexec/locate.updatedb 用于更新定位数据库的脚本*) (10认同)
  • @Arjan:它应该每周运行一次,但默认情况下它是禁用的,应该在星期日凌晨 3 点(或类似的时间)完成,这不是很有用:) (5认同)
  • 使用聚光灯的“locate (-r)”和“updatedb”的示例 macosx 替代方案(“-i”当然是可选的): mdfind -name “mp4” | egrep -i "^/Users.*Downloads/.*Stuff" (3认同)

小智 94

您可以执行此操作sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb以使updatedb命令可用。

  • 或在您的 .bash_profile 中为其别名 (6认同)

小智 20

就个人而言,我刚刚安装了 findutils(使用 MacPorts 或 Homebrew)。

然后你有 GNU 定位和更新 b。

没有 sudo,updatedb 将无法工作。

我个人更喜欢每个用户都定位b;如果您 sudo 其他用户将知道您所有文件的名称/位置。

我有一个 cron 作业要运行:

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

在我的 .zshrc .bashrc/.bashprofile 中:

export LOCATE_PATH="~/tmp/locatedb"

  • 在 OS X Mavericks 上 Brew 安装 findutils 给了我一个 `gupdatedb` 命令,而不是一个 `updatedb` 命令。不幸的是,此命令给了我 [此处描述的错误](http://www.rubycoloredglasses.com/2012/03/locate-and-updatedb-with-homebrew/)(其中引用了您的 SO 答案)。最终,我将 `updatedb` 别名为 `LC_ALL='C' sudo updatedb` 作为一种解决方法,但我不知道这是否是一个长期解决方案。 (3认同)
  • 在路径的开头添加 `/opt/local/libexec/gnubin`,如果你希望 `macports` 安装的 `coreutils` 和 `findutils` 可用它们的原始名称(而不是它们的 `g` 前缀)版本)。 (2认同)

Tan*_*n六四 5

如果您在没有先更新数据库的情况下运行locate,您有机会通过其输出看到操作系统推荐的方式。

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

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

Please be aware that the database can take some time to generate; once 
the database has been created, this message will no longer appear.
Run Code Online (Sandbox Code Playgroud)