在Mac上,Linux的updatedb命令等效于什么?


234

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


upatedb和locate很好,但是它们需要定期运行updatedb(updatedb定期运行,这会在不方便的时候减慢您的系统速度,或者locate显示对不再存在的文件的引用)。因此,我认为与其设置locate / updatedb,不如熟悉(功能更强大)查找可能会更好。
amo-ej1 2010年

9
尽管查找对于很多事情很有用,但每次都需要遍历文件系统。如果您可以缩小查找范围,那很好。定位的优点是保留自己的数据库,因此不需要每次都搜索。这对于大型和/或远程文件系统尤为重要。我认为每个都有它的位置。
KeithB 2010年

1
首次locate在OS X盒子上运行时,它会告诉您运行sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Török的Gabor

11
根据您需要使用locate的内容,您可能会发现使用Spotlight的命令行界面更为方便mdfind,因为Spotlight数据库几乎始终是最新的,并且提供了比定位更多的功能。man mdfind
Paul R 2010年

Answers:


327

这是locate.updatedb在Mac上。

须藤/usr/libexec/locate.updatedb

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


9
man页面还声称:它通常由/System/Library/LaunchDaemons/com.apple.locate.plist作业每周运行一次。(并man locate告诉一个有关该脚本的命令:/usr/libexec/locate.updatedb用于更新定位数据库的脚本
Arjan 2010年

5
@Arjan:它应该每周运行一次,但是默认情况下它被禁用,并且应该完成的时间是星期日的凌晨3点(或类似的时间),这并不是真正有用的:)
Studer 2010年

在linux上,我通常会运行sudo ionice -c3 updatedb以告诉updatedb您很好地共享I / O控制器(io不错),但我认为该命令在Mac上不可用。我也想念有-r可以与GNU定位一起使用的正则表达式标志,尽管我不确定我是否要使用自制程序并安装@Grogs提到的GNU定位
cwd

3
使用聚光灯的“ locate(-r)”和“ updatedb”的示例macosx替代(当然是“ -i”可选):mdfind -name“ mp4” | egrep -i“ ^ / Users。* Downloads /.* Stuff”
michael

另外,如果你没有找到你期望从的虫子栏中注明此相关的警告文件,手册页The 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
Ashutosh说金达尔


19

我个人只是安装了findutils(使用MacPorts或Homebrew)。

然后,您有GNU定位并更新了b。

没有sudo,updatedb无法正常工作。

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

我有一项计划任务要运行:

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

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

export LOCATE_PATH="~/tmp/locatedb"


3
在OS X Mavericks上现装安装findutils是给我一个gupdatedb命令,而不是updatedb一个。不幸的是,此命令给了我一个错误,这里描述了错误(引用了您的SO答案)。最后我别名updatedbLC_ALL=’C’ sudo updatedb作为一种解决方法,但我不知道这是一个长期的解决方案。
大卫·里弗斯

2
/opt/local/libexec/gnubin如果希望coreutilsfindutils安装依据macports可以使用其原始名称(而不是其- g前缀版本),请在路径的开头添加。
Ioannis Filippidis 2014年

2

如果在不先更新数据库的情况下运行定位,则有机会通过其输出查看操作系统的推荐方式。

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.