locate, slocate使用说明
前言
有时您需要立即找到一个文件,而不想在一个又一个目录中搜索它。此时可以访问CLI并locate到文件。或者slocate,取决于你机器安装的版本。使用locate或slocate只有一个问题,那就是保持最新的数据库。以下是它们的工作原理和使用方法,它们的使用灵活、及时。Slocate和locate的作用基本相同:在系统上数据库上搜索包含文件名和位置查找匹配项,并报告找到的所有匹配项。两者都依赖于另一个程序updatedb,通过创建/维护要搜索的数据库来完成繁重的工作。Slocate通过存储每个文件的权限和所有权,然后只显示运行Slocate请求的用户有权访问的文件,从而提供了更高的安全性。
locate/slocate使用
locate/slocate的格式很简单:locate options pattern.
搜索模式最好尽可能具体,因为locate
将列出它找到的包含匹配项的每个文件名。如果我使用locate
搜索系统中的demo,如:
locate demo
它输出超过400个匹配项。但是如果我搜索libdemo而不是简单的demo,locate只返回3个匹配项。
如果只关心找到匹配的次数,可以在搜索中指定-c选项,如下所示:
locate -c demo
Linux中的文件名对大小写是敏感的,对于不熟悉Unix的用户来说,有时是非常恼火的。在搜索文件名之前,试图记住文件名是whereami、whereAmi还是whereAmI 会给任务增加挫折感。通过在搜索中添加 -i 选项,告诉locate不区分大小写,如下所示:
locate -i whereami
更新数据库
由于updatedb通常每天只运行一次,因此有时需要查找自上次更新以来创建的文件。在这种情况下,只需输入命令updatedb作为root并让它运行。它可能需要几分钟来完成,甚至更长,如果你有大量的文件要说明。要了解数据库有多大,请输入locate-S,如下所示:
warthawg@linux:~> locate -S
Database/var/lib/locatedb is in the LOCATE02 format.
Locate database size: 3411612 bytes
Filenames: 401444 with a cumulative length of 20196439 bytes
of which 38656 contain whitespace,
0 contain newline characters,
and 43 contain characters with the high bit set.
Compression ratio 83.11%
额外工具rlocate使用说明
在进行搜索之前必须运行数据库更新程序才能访问系统上的最新文件,这远不是一个优雅的解决方案。有些人就是不想等。如果这描述了您的情况,那么您可能需要查看一个名为rlocate的新项目。它基于slocate,但几乎具有实时搜索功能。
rlocate-目前在beta版本中可用-需要2.6或更高版本的Linux内核。它作为一个内核模块,维护一个包含自上次运行updatedb以来创建的文件和目录的每日数据库。
执行slocate时,将搜索rlocate内核模块维护的新文件的每日数据库和所有文件的夜间数据库。结果是搜索结果不超过2秒。