locate 快,在 /var/lib/mlocate 中搜索,每天更新一次,可以强制更新
只可以按照文件名搜索
find 慢
文件搜索命令
locate 文件名(只能搜索文件名,模糊匹配)
搜索的是后台数据库系统,所以搜索速度快(数据库系统一天一更新)
updatedb命令更新数据库系统
/etc/updatedb.conf配置locate搜索条件
格式:locate 文件名
只能搜索文件名,是搜索数据库的文件名称,
注:当天更新的文件搜索不到,使用updatedb强制更新以后可以搜索到,原更新频率一天一次
updatedb文件中排除了tmp文件夹及其他一些文件夹和后缀名的文件不更新,所以locate文件会搜不到相关排队后的文件
优点:查询效率快
文件搜索命令locate 文件名 /var/lib/molcate 所搜索的数据库 updatedb 更新数据库
命令搜索命令whereis与which
文件搜索命令find
字符串搜索命令grep
【Linux】第四章 linux 文件搜索命令 locate
1、locate 文件名
1-1)在后台数据库中按文件名搜索,搜索速度更快
1-2)对于新建的文件,由于数据库没有更新,使用locate 不能查到。可以使用 updatedb强制更新数据库后即可查到。
1-3)可使用 locate locate 搜索locate相关文件,可看到locate数据库。
1-4)在不同linux中,该数据库名字稍微不同,例如,locatedb、slocate、mlocate。
2、/var/lib/mlocate (保存的搜索数据库)
2-1)#locate 命令所搜索的后台数据库
2-2)数据库不是实时的,更新频率大概一天更新一次
3、updatedb
3-1)更新数据库
4、缺点:只能按照文件名进行搜索,但常用。
5、配置文件
5-1)touch /root/cangls
touch /tmp/cangls
updatedb
locate cangls
显示为 /root/cangls 只有一条,而/tmp下的cangls没有显示出来,原因在于locate搜索遵循配置文件 /etc/updatedb.conf, 在PRUNEPATHS 中配置了/tmp/目录不进行搜索。所以没有进行查找。
5-2)/etc/updatedb.conf 配置文件
5-2-1)PRUNE_BIND_MOUNTS = "yes"
#开启搜索限制,yes为后面三项都生效。no为 后面三项都不生效
5-2-2)PRUNEFS =
#搜索时,不搜索的文件系统
5-2-3)PRUNENAMES =
#搜索时,不搜索的文件类型
5-2-4)PRUNEPATHS =
#搜索时,不搜索的路径
文件搜索命令
‘locate命令有点搜索快,但是缺点是只能搜索文件l
locate搜索快,但功能单一
巩固练习
locate install.log #搜索install.log文件
locate loacte #可找到loacte的信息(含locate的数据库,默认)
updatedb #更新数据库
vi /etc/updatedb.conf #查看文件系统更新的筛选规则
aaa
locate 文件名 (在后台数据库中按 文件名 搜索,速度快)
包含文件名的文件都会被列出
/var/lib/mlcate (locate 命令所搜索的是后台的数据库 默认每天自动更新)
updatedb (手动更新数据库)
/etc/updatedb.conf 配置文件
PRUNE_BIND_MOUNTS = "yes" (开启搜索限制)
PRUNEFS = (不搜索的文件系统)
PRUNENAMES = (不搜索的文件类型)
PRUNEPATHS = (不搜索的路径)
locate比find搜索速度非常快
1.文件搜索命令:locate (搜索速度快) locate 文件名
搜索的后台数据库:var/lib/mlocate(每天更新,所以touch有个文件,当时用locate不能搜到,mlocate这个名字会因为版本不同而不同)
强制更新数据库:updatedb (更新之后就能搜到了)
可以用locate去搜一下locate本身(var/lib/mlocate);
缺点是只能根据文件名搜索;
搜索逻辑:vi /etc/updatedb.conf (列了不搜索的条件,比如这个命令不搜索tmp目录)
2.命令搜索命令:whereis和which,
whereis 可以搜索出命令位置, 和 命令帮助文件,-b 只搜索位置,-m 只搜索帮助文件
which 可以搜索出命令的别名,不能搜到cd命令,因为cd是shell自带的
path环境变量:定义的是系统搜索命令的路径(echo $path)
3.文件搜索命令:find (耗费资源,所有文件名都会搜一遍)
find 搜索范围 搜索条件(比较耗时,应避免大范围搜索,会非常耗费系统资源)
会搜索符合条件的文件名(此时名叫ceshi1,ceshi2的搜不会被搜出来,这里若不加-name 则会列出zhaozy下的所有文件);
如果需要匹配,使用通配符匹配,通配符是完全匹配的,注意要加双引号;
附:通配符:
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
eg:[23],有括号里任意一个即可匹配,但是测试233不能被搜到,只能搜到ceshi2或者ceshi3:
find /home/aimdb/tools/zhaozy -name "ceshi[23]"
eg: 搜索2或者3结尾的:find /home/aimdb/tools/zhaozy -name "*[23]"
文件搜索命令
locate(搜索速度快)
locate 文件名 在后台数据库中按文件名搜索
/var/lib/mlocate locate命令所搜索的后台数据库,这个数据库不是实时更新,大概是一 天更新一次
updatedb 强制更新数据库
/etc/updatedb.conf locate是按照该配置文件的规则来进行搜索
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"
//不搜索的路径
关于这个linux文件系统需要补充学习
文件搜索命令 :locate和find命令
本次locate命令:搜索速度快
locate 文件名
强制更新数据库命令 updatedb
文件搜索命令:
一、文件搜索命令 locate
locate 搜索文件,只支持搜索文件名,新增文件后若要该查询生效,需执行/updatedb;
//updatedb配置文件位于/etc/updatedb.conf,并以此为依据过滤查询结果。
原因:locate引用/var/lib/mlocate文件
二、命令搜索命令 whereis 与 which:
whereis和which 只能搜索系统命令,找不到shell自带的命令(如cd),不能搜索创建的文件
whereis -b 只查找可执行文件 -m 只查找帮助文件
which 查看命令所在位置和对应的别名
PATH环境变量:系统搜索命令的路径,使用echo $PATH可以看到都有哪些路径。
三、文件搜索命令 find
find [搜索范围] [搜索条件] #搜索文件 1.按名字搜索 find / -name install.log
#避免大范围搜索,会非常耗费系统资源 # find 是在系统当中搜索符合条件的文件名。如果需要匹配使用通配符匹配,通配符是完全匹配 Linux 中的通配符* 匹配任意内容? 匹配任意一个字符[] 匹配任意一个中括号内的字符 2.find /root -iname install.log # 不区分大小写 3.find /root -user root # 按照所有者搜索 4.find /路径 -inum i节点 5.find /root -nouser # 查找没有所有者的文件 6.find /var/log/ -mtime +10 #查找 10 天前修改的文件 -10 10 天内修改文件 10 10 天当天修改的文件 +10 10 天前修改的文件 7.find /etc -size +20k -a -size -50k # 查找 /etc/ 目录下,大于 20KB 并且小于 50KB 的文件 -a and 逻辑与,两个条件都满足-o or 逻辑或,两个条件满足一个即可 8.find /etc -size +20k -a -size -50k -exec ls -lh {}\; # 查找 /etc/ 目录下,大于 20KB 并且小于 50KB 的文件,并显示详细信息 -exec XXX{} \;表示对查询结果进行ls -lh命令
llocate 命令。mlocate 数据库,updatedb 更新
文件搜索命令:locate
locate 搜索文件,新增文件后若要该查询生效,需执行/updatedb;
//updatedb配置文件位于/etc/updatedb.conf,并以此为依据过滤查询结果。
原因:locate引用/var/lib/mlocate文件
/etc/updatedb.conf 配置文件
PRUNE_BIND_MOUNTS="yes" # 开启搜索限制
PRUNEFS = # 搜索时,不搜索的文件系统
PRUNENAMES = # 搜索时,不搜索的文件类型
PRUNEPATHS = # 搜索时,不搜索的路径
locate
命令格式
locate
文件名:在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate
:locate
命令所搜索的后台数据库
updatedb
:更新数据库
文件搜索命令 locate
命令搜索命令 whereis 与 which
文件搜索命令 find
字符串搜索命令 grep
find 命令与 grep 命令的区别
在/etc/updatedb.conf中配置搜索的配置
locate 文件名 搜索,在数据库搜索,所以快。但是刚新增的文件需要更新的数据库才会被搜索到,默认是一天更新一次,也可以使用updatedb 来强制更新数据库。
locate 文件名
locate优点:搜索速度快。它是搜索的/var/lib/mlocate数据库。
缺点:一般找不到新建的文件,需要手动更新下数据库或者等数据库自动更新后 才可以找到。
eg:新建文件 然后更新数据库 最后再locate查找
touch cnagls
updatedb
locate cangls
文件搜索命令的配置文件 设置
文件搜索命令
文件搜索命令 locate 搜索速度非常快
locate 文件名 配合搜索 它在 /var/lib/mlocate 保存下的后台数据库 中就行搜索 此数据库 更新频率 每天一次
updatedb 强制更新 此数据库后 就可以找到
在后台数据库中按文件搜索,搜索速度更快
缺点 只可以按照文件名来进行搜索
按照配 /etc/updatedb.cnf配置文件 来进行 搜索
打开配置文件vi /etc/updatedb.conf conf 一般为配置文件后缀