2009-06-29 79 views
8

我最近将我的整个本地网络开发区移到使用MacPorts的东西,而不是在我的Mac上使用MAMP。我已经进入Python/Django,并且不再需要MAMP了。unix locate命令如何显示仍然不存在的文件/文件夹?

事情是,我已经从应用程序文件夹中卸载了MAMP,并使用了首选项文件,但是当我在终端中运行'locate MAMP'命令时它仍然显示所有我的/ Applications/MAMP /东西,就像它仍然在那里?而当我'cd'进/ Applications/MAMP /它不存在?

与定位是一种索引搜索系统有关,因此这些旧的文件路径被缓存?请解释为什么,以及如何对其进行排序,以便它们不再显示。

回答

8

您有正确的想法:locate使用名为'locatedb'的数据库。它通常由系统cron作业更新(不确定在OS X上);您可以使用updatedb命令强制进行更新。请参阅http://linux-sxs.org/utilities/updatedb.html等。


另外,如果你找到您预期,注意从OSX” locate(1)手册页的BUGS节这个重要的警告文件:

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.

+0

出于同样的原因,找不到最近创建的文件 - 自上次更新后创建的任何文件都不会被locate查看。 – 2009-06-29 22:52:47

+0

在OSX 10上。10,更新数据库的系统cron是`/ System/Library/LaunchDaemons/com.apple.locate.plist` – 2015-12-09 12:12:19

0

事实上, 找到命令搜索索引,这就是为什么它很快。 该索引由updatedb命令生成,该命令通常作为每晚的 或每周工作运行。

所以要手动更新它,只需运行updatedb

0

根据该男子页,其数据库每周更新一次:

NAME 
    locate.updatedb -- update locate database 

SYNOPSIS 
    /usr/libexec/locate.updatedb 

DESCRIPTION 
    The locate.updatedb utility updates the database used by locate(1). It is typically run once a week by 
    the /etc/periodic/weekly/310.locate script. 
0

看一看在找到人网页

http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1

你会看到,找到一个搜索数据库,而不是你的实际文件系统。 您可以使用updatedb命令更新该数据库。

另外,由于它是一个数据库,除非您定期更新它,否则找不到数据库中的文件系统中的文件。

6

其他答案对于需要更新定位数据库是正确的。我有了这个别名来更新我找到DB:

alias update_locate='sudo /usr/libexec/locate.updatedb' 

其实我不使用找到那么多了,现在我发现mdfind。它使用聚光灯文件索引,OSX在保持最新状态方面与位置相比更好。它在从命令行搜索的功能上也具有相当大的权力。

相关问题