一个系统中文件多了,会难找到具体的位置,虽然有find神器,但是如果文件数非常多的话,也需要很长的时间,并且在极限情况下,find会把整个存储系统都扫描一遍。
Linux/Unix提供了一个工具来快速的查找文件,这就是locate。
locate不是在需要的时候去扫描磁盘,而是定时扫描磁盘,默认是一周,然后把所有文件名都放在一个数据库中,在需要的时候,直接查数据库,不需要再扫描磁盘,所以查找文件的速度就非常快了。
使用也非常简单,没有特殊要求的话,直接在后面加上文件名就可以了:
%locate php5-exif
/usr/ports/graphics/php5-exif
/usr/ports/graphics/php5-exif/Makefile
/usr/ports.bak/graphics/php5-exif
/usr/ports.bak/graphics/php5-exif/Makefile
在这个例子中,来查找php5-exif的位置,显示的结果不仅显示了php5-exif的位置,并且把它的下级目录都显示了出来。
注意我的系统对ports做了个备份,locate连备份里面的文件都显示出来了。
如果是新安装的系统,运行locate时会提示:
%locate php5-exif
locate: database too small: /var/db/locate.database
这是因为locate的数据库还没有建立起来。
locate用的默认数据库是:/var/db/locate.dtabase,如果要手动更新这个数据库,可以运行命令:
/usr/libexec/locate.updatedb
这个命令会更新数据库。在大多数情况下,这个数据库每周运行一次,由/etc/periodic/weekly/310.locate来调用,当然也可以手工运行/etc/periodic/weekly/310.locate,也会得到一个新的locate数据库。
如果有文件locate不到的话,也可以手工运行一下这个程序。
该贴被wulcan编辑于2014-8-27 9:37:34该贴由hui.chen转至本版2014-11-5 17:04:55