locate
的速度比find
快,因为它并不是真的查找文件,而是查数据库。新建的文件,我们立即用
locate
命令去查找,一般是找不到的,因为数据库的更新不是实时的,而是每天locate
命令所搜索的后台数据库在/var/lib/mlocate
这个目录下,可能有些Linux系统位置不同,具体我们可以用locate locate
查询并不是所有的目录下的文件都会用
locate
命令搜索到,/etc/updatedb.conf
这个配置文件中,配置了一些locate
命令的一些规则。updatedb
会大致每天运行,这是靠系统的crontab命令实现的updatedb -U
:更新指定目录相关的数据库信息。默认是整个系统,耗时比较长,因此可以使用该参数,比如sudo updatedb -U /home/user/
updatedb
的配置文件 /etc/updatedb.conf
1
2
3
4
5cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"
PRUNENAMES
搜索时不搜索的文件类型PRUNEPATHS
搜索时不搜索的路径PRUNE_BIND_MOUNTS = "yes"
开启搜索限制PRUNEFS
搜索时不搜索的文件系统
locate 常用命令
1 | locate -c # 查询指定文件的数目。(c为count的意思) |
从结果中取出词尾是config2
的
注意:locate的结果可能是不存在的文件,这时最好用locate -e
locate 查找文件tree.xml
,也就是知道完整的文件名时,那么最好用 locate /tree.xml
,如果不加/
,会显示test_tree.xml
的结果
find 常用命令
查找当前目录中(包括子目录)所有扩展名为cfg的文件:1
2# 或者 '*.cfg'
find -name *.cfg
find . -name '*.cpp' -mmin -30
当前目录下,最近30分钟修改的cpp文件find . -name '*.cpp' -mtime 0
当前目录下,最近24小时修改的cpp文件find . -type f -mtime 0
当前目录下,最近24小时修改的常规文件