功能简述locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的索引数据库之后当寻找时就只需查询这个索引数据库而不必实际深入档案系统之中了。Locate因为是只去检索索引数据库所以在比find全盘检索要快非常多。
在一般的 distribution 之中数据库的建立都被放在 crontab 中自动执行。由于locate使用的数据库是通过crondaemon周期性建立来更新的。一般周期是一周更新一次所以有在近今天内新建的文件会查找不到或者是查找到已经删除了的文件。那么我们可以通过update db命令手动更新一下或者自己再重新调整更新周期。
命令参数
-e 将排除在寻找的范围之外。
-1 如果 是 1则启动安全模式。在安全模式下使用者不会看到权限无法看到的档案。这会使速度减慢因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-f 将特定的档案系统排除在外例如我们没有道理要把 proc 档案系统中的档案 放在资料库中。
-q 安静模式不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息
使用实例
查找包含某个字符串的相关文件
[atong@LiWenTong tmp]$ locate passwd-----》可以发现找出来的文件面只要包含了passwd的都会被显示出来。我们需要自己再进行相应的筛选。
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib/security/pam_passwdqc.so
/lib/security/pam_unix_passwd.so
查找/etc目录下m开头的文件
#locate /etc/m
/etc/mkdir
/etc/mask
手动更新系统索引数据库
[atong@LiWenTong tmp]$ updatedb
updatedb: can not open a temporary file for`/var/lib/mlocate/mlocate.db'
[atong@LiWenTong tmp]$ sudo updatedb
[sudo] password for atong:
[atong@LiWenTong tmp]$--->需要等一段时间因为更新索引数据库还是需要再去重新完整的检索一边所有文档
----------------------------后续自我小结---------------------------
locate的功能上也是蛮简单就是在系统中查找我们想要的东西并且这个locate是类似于查找索引一样的数据库表并且是到硬盘当中去一个一个真正的找过去而find就是这样的方式所以速度上比find快很多但是功能和查找的条件参数上比find也是差很多的。但轻量级的查找是很好用的。
-------------------------------------------------------------------
Linux下的文件查找——type whereis which find locate