定位命令无法在mac上的Documents文件夹中找到任何内容

时间:2013-04-08 19:37:23

标签: macos bash documents locate

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

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
谁能帮助我吗?我已经坚持了半个小时左右。

3 个答案:

答案 0 :(得分:15)

正如plundra所指出的那样,那是因为locate OSX附带的旧版本已经过时并且已经瘫痪,并且没有索引和/或报告nobody无法读取的文件,即使以root身份运行也是如此。您可以做的是安装homebrew然后安装GNU locate,或者按照建议here使用mdfind -name代替(我手边没有OSX框来测试这一点)。

答案 1 :(得分:8)

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

locate(1)手册页的BUGS部分解释了它:

  

定位数据库通常由用户''nobody'和   locate.updatedb(8)实用程序跳过不可读的目录   对于用户''nobody'',分组''nobody''或世界。例如,如果你的   HOME目录不是世界可读的,你的文件都没有   数据库中。

尝试运行ls -ld ~/Documents,您将看到权限。如果您不熟悉这些内容,维基百科会在Unix permissions上发表文章。

答案 2 :(得分:1)

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