2009-06-29 56 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在保持最新狀態方面與位置相比更好。它在從命令行搜索的功能上也具有相當大的權力。

相關問題