7

正如描述中所说。我首先检查我们的数据库是最新的

mh547:bin crashandburn4$ sudo /usr/libexec/locate.updatedb
Password:       #password entered and function executed without errors

然后我尝试在我的 Documents 文件夹中搜索一些东西

mh547:bin crashandburn4$ cd ~/Documents/
mh547:Documents crashandburn4$ ls
    Mamp_workspace/                         Scenarios.docx                          gc01/
mh547:Documents crashandburn4$ locate Scenarios.docx    #nothing returned

然后我尝试另一个随机文件夹:

mh547:Documents crashandburn4$ cd ..
mh547:~ crashandburn4$ ls
    Applications/                Movies/                      drawable/                    untitled-2.pdf
    Desktop/                     Music/                       drawable-xhdpi/              untitled-2.synctex.gz
    Documents/                   Pictures/                    dwhelper/                    untitled-2.tex
    Downloads/                   Public/                      linux_ssh*                   website-terminal-copy-paste
    Dropbox/                     Samsung/                     scripts/                     workspace/
    Google Drive/                Sites/                       untitled-2.aux               workspace_copy_to_linux*
    Library/                     android-sdks/                untitled-2.log
mh547:~ crashandburn4$ locate website-terminal-copy-paste 
/Users/crashandburn4/website-terminal-copy-paste #correct result returned

谁能帮我?我已经坚持了半个小时左右。

4

3 回答 3

18

正如 plundra 所指出的,这是因为locateOSX 附带的旧且残缺不全nobody,即使以 root 身份运行,也不会索引和/或报告无法读取的文件。但是,您可以做的是安装homebrew然后GNU locate,或者按照此处的建议使用mdfind -name(我手头没有 OSX 盒子来测试它)。

于 2013-04-08T20:13:01.653 回答
8

这是因为您的 Documents-folder 不是世界可读的,这是一件好事,特别是在共享系统上。

locate(1)手册页的 BUGS 部分对此进行了解释:

定位数据库通常由用户 ''nobody'' 构建,并且 locate.updatedb(8) 实用程序会跳过对用户 ''nobody''、组 ''nobody'' 或 world 不可读的目录。例如,如果您的 HOME 目录不是世界可读的,那么您的任何文件都不在数据库中。

尝试运行ls -ld ~/Documents,您将看到权限。如果你不熟悉这些,维基百科有一篇关于Unix 权限的文章。

于 2013-04-08T20:01:59.833 回答
1

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

于 2016-11-09T14:44:34.387 回答