相比于find查找,locate查找具有无可比拟的更快的速度,这是因为locate不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息(也可以理解为建立了一个文件名称索引)。Linux系统自动创建这个数据库,并且每天通过crontab自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
slocate的完整名称叫做:secure locate,但我也没有找到它是为什么secure的,经过与locate的比较,slocate是比locate多了一个参数:-u,它的作用是更新slocate数据库,难道它会自动在查找之前先updatedb一次从而确定结果更准确?网上也没有找到进一步的信息,不过到是发现了另一个mlocate命令。
在ubuntu15.04里,已经默认没有了slocate命令了,mlocate是GNU locate的一个变种。相比原始的locate,它具有一个很好优点: 每次更新数据库时并不需要重新读取全部目录的内容。mlocate 在数据库中保存了时间戳信息,无需重新读取,就能判断目录内容是否改变。所以更新的速度更快,对硬盘的占用也更少。这是 mlocate 特有的功能。即mlocate更新时对磁盘的读取大大减少。结论就是mlocate是slocate的升级替代命令。
参考:linux上的文件查找locate-slocate-mlocate-04007技术笔记
使用find查找文件,参考:
linux文件查找命令find,xargs详述 - 田进 - 博客园
Linux下find命令详解_liangkk的博客-CSDN博客
使用locate查找文件,参考:
每天一个linux命令:locate - 小强斋太 - 博客园
使用mlocate查找文件,参考:
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
- which 只能查可执行文件和别名(alias) ,并在PATH变量里面寻找,它是通过 PATH 环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件。
- whereis 只能查二进制文件(含可执行文件)、说明文档,源文件等,从linux文件数据库(/var/lib/slocate/slocate.db 或 /var/lib/mlocate/mlocate.db)寻找,所以有可能找到刚刚删除,或者没有发现新建的文件
- locate 在数据库里查找,数据库大至每天更新一次,文件名是部分匹配(见 3 locate passwd 的结果:opasswd)
- find 最强大,什么都能查,根据条件查找文件,在硬盘上查找,效率很低。
参考:https://www.jb51.net/LINUXjishu/512244.html
使用whereis查找,参考:
Linux whereis 基础命令 | 《Linux就该这么学》
Have Fun