Linux locate命令详解

Linux locate命令详解教程

Linux 中的 locate 命令用来查找文件或目录。 locate 命令要比 find -name 快得多,原因在于它不搜索具体目录,而是搜索一个数据库 /var/lib/mlocate/mlocate.db。

Linux locate命令使用

Linux locate 命令使用的数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次。

因此,我们在用 whereis 和 locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。整个 locate 工作其实是由四部分组成的:

组成 描述
/usr/bin/updatedb 主要用来更新数据库,通过 crontab 自动完成的。
/usr/bin/locate 查询文件位置
/etc/updatedb.conf updatedb 的配置文件
/var/lib/mlocate/mlocate.db 存放文件信息的文件

Linux locate命令详解

功能

查找文件或目录。

语法

locate [OPTION]... [PATTERN]...

参数

参数 描述
-b, --basename match only the base name of path names。
-c, --count 只输出找到的数量。
-d, --database DBPATH 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db。
-e, --existing only print entries for currently existing files。
-L, --follow follow trailing symbolic links when checking file existence (default)。
-i 忽略大小写。

Linux locate命令常用实例

实例

实例 描述
locate file 查找文件 file
locate -i file 忽略大小写查找文件 file

locate查找文件

语法

locate file

案例

我们使用 locate 命令,查找 etc 目录下 my 开始的文件,具体命令如下:

locate /etc/my

运行后,终端输出如下:

115_Linux文件查找locate命令详解.png

我们看到,我们使用了 locate 命令,查找了 etc 目录下所有以 my 开始的文件。

locate查找文件

语法

locate file

案例

我们使用 locate 命令,查找 Linux 的安装文件,具体命令如下:

locate install.log

运行后,终端输出如下:

116_Linux文件查找locate命令详解.png

我们看到,我们使用了 locate 命令,查找了 Linux 的安装文件。

新增文件无法locate

语法

updatedb locate file

案例

我们首先,使用 touch 命令,新建一个 haicoder.txt 文件,具体命令如下:

touch haicoder.txt

现在,我们使用 locate 命令,查找刚创建的文件,具体命令如下:

locate haicoder.txt

运行后,终端输出如下:

117_Linux文件查找locate命令详解.png

我们看到,没有找到该文件,因为,此时数据库还没有更新,现在,我们使用 updatedb 更新数据库,具体命令如下:

updatedb

运行后,终端输出如下:

118_Linux文件查找locate命令详解.png

现在,我们再次使用 locate 查找文件,具体命令如下:

locate haicoder.txt

运行后,终端输出如下:

119_Linux文件查找locate命令详解.png

我们看到,这次,我们找到了该文件。

locate忽略大小写

语法

locate -i file

案例

我们使用 locate 命令,查找 passwd 文件,具体命令如下:

locate Passwd

运行后,输出如下:

120_Linux文件查找locate命令详解.png

我们看到,查找到的都是大写的 Passwd 文件,现在,我们使用忽略大小写进行查找,具体命令如下:

locate -i Passwd

运行后,输出如下:

121_Linux文件查找locate命令详解.png

这次,我们看到,小写的 passwd 也被搜索到了。

Linux locate命令详解总结

Linux 中的 locate 命令用来查找文件或目录。 locate 命令要比 find -name 快得多,原因在于它不搜索具体目录,而是搜索一个数据库 /var/lib/mlocate/mlocate.db。