Linux命令12:locate与updatedb

最常用的查找文件的命令find,但find是读盘搜索,效率较低。本文介绍locate,可以快速读取mlocate数据库文件,速度非常快。Windows的类似软件是Everything

updatedb

在大多数发行版,如CentOS系统,updatedb每天执行一次,是一个cron的定时任务,即,每天不定时的更新,具体文件是如下。

1
2
3
4
5
6
7
8
$ sudo cat /etc/cron.daily/mlocate

#!/bin/sh
nodevs=$(awk '$1 == "nodev" && $2 != "rootfs" && $2 != "zfs" { print $2 }' < /proc/filesystems)

renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

当系统刚刚建立时,或者新增、删除文件时,mlocate的数据库文件并不能同步更新,需要使用root用户手动执行updatedb命令进行更新。

1
# updatedb

locate

mlocate文件建立是,则可以使用locate命令查找文件。

常用参数

-b:只匹配base name。
-e:只显示存在的文件。
-i:忽略大小写。
-r:正则表达式

肌肉训练

1) 查找包含passwd的文件。

1
$ locate passwd

2) 精确查找名叫passwd的文件。

1
$ locate -b '\passwd'

3) 查找以passwd结尾的文件。

1
$ locate '*passwd'

如果本文对你有所帮助,请小额赞助
~~ EOF ~~