用locate查找文件

4.6 搜索文件
Fedora借助mlocate软件包维护了一个文件系统所有文件(/etc/updatedb.conf文件指定例外情况)相关的数据库。locate命令可以搜索该数据库,由于搜索的是数据库而非实际的文件系统,故能立即返回结果。locate出现之前,大部分Linux用户使用find命令在文件系统中查找文件。这一节将分别介绍locate和find命令。
4.6.1 用locate查找文件
locate数据库不仅包含命令,还包含文件系统各个节点的名称,使用locate可以查找文件系统里的命令、设备、手册页、数据文件或可根据名字识别的任意文件。示例如下:

$ locate e100
/lib/modules/2.6.20-1.2949.fc7/kernel/drivers/net/e100.ko
/lib/modules/2.6.20-1.2949.fc7/kernel/drivers/net/e1000/e1000.ko

上面的示例会查找e100.ko和e1000.ko这两个内核模块。locate命令使用-i选项时不区分大小写,否则区分大小写,示例如下:

$ locate -i itco_wdt  
/lib/modules/2.6.20-1.2949.fc7/kernel/drivers/char/watchdog/iTCO_wdt.ko
下面几个示例使用locate加上正则表达式:

$ locate -r /ls$             查找以/ls$结尾的文件  
/bin/ls  
/usr/share/locale/l10n/ls  

$ locate -r mkfs*3           查找文件名包含mkfs和3的文件  
/sbin/mkfs.ext3  
/usr/share/man/man8/mkfs.ext3.8.gz  

$ locate -r ^/boot/grub/me   查找以/boot/grub/me开头的文件  
/boot/grub/menu.lst
RPM包mlocate(有些Linux发行版为slocate)会提供一个cron作业,每天运行一次updatedb命令,用于更新文件 locate数据库。由于用户要找的文件可能在数据库上次更新后已删除,可以使用locate -e检查数据库中找到的文件是否仍然存在:

$ locate -e myfilename

手工运行updatedb命令可以立即更新locate数据库:

# updatedb

上一篇: 实战MYSQL的 having 子句   下一篇: 三个设置解决Putty登陆Linux同时支持GBK与UTF-8编码乱码的问题

提交疑问

回顶部