在运维人员操作系统时,要接触大量的文件,为了避免忘记文件存放位置的尴尬,就需要我们有一种文件查找工具的帮忙,下面是两个文件查找工具的详解,locate以及find,分别分享给大家。
第一款工具: Locate
locate - find files by name
locate的工作依赖于事先构建好的索引库;查找文件时,直接搜索索引库里记载的文件的位置;
索引库的构建:
系统自动实现(周期性任务);
手动更新数据库(updatedb),但是索引构建的过程需要遍历整个文件系统,极其耗费系统资源;
updatedb - update a database for mlocate;
工作特性:
查询速度快,但不一定精确,无法匹配到数据库创建后的创建文件;
非实时查找,不能实时反馈当前文件系统上的文件状态 ;
使用方法:
locate [OPTIONS] FILE..
选项:
-c:统计查找结果的数量
-b:只匹配路径中的基名
-r:基于基本正则表达式写匹配模式
1 2 3 4 5 6 7 8 9 10 11 12
[root@linuxidc ~]# locate -c "passwd" 165 [root@linuxidc ~]# locate -c "inittab" 4 [root@linuxidc ~]# locate -b "inittab" /etc/inittab /usr/local/share/man/zh_CN/man5/inittab.5 /usr/share/augeas/lenses/dist/inittab.aug /usr/share/vim/vim74/syntax/inittab.vim [root@linuxidc ~]# locate -r "/passwd
第二款工具:Find
find: find - search for files in a directory hierarchy
工作方式:通过遍历指定起始路径下文件系统层级结构完成文件查找;
工作特性:
查找速度慢;
精确查找;
实时查找;
使用方法:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
fing [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径;默认当前目录;
查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准,默认为指定目录下的所有条件
处理动作:对符合条件的文件作出的操作,例如删除等操作,默认为输出至标准输出
查找条件说明:
以表达式的形式,包含选项和测试条件
测试:结果通常为布尔型数据("true""fales")
(1)根据文件名查找 注意:支持glob风格的通配符
-name "pattern":区分大小写
-iname "pattern":不区分名字的大小写,
-regex "patten":基于正则表达式模式查找文件,匹配是整个路径 ,而非其名;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[root@linuxidc ~]# find /etc -iname "passwd" /etc/passwd /etc/pam.d/passwd [root@linuxidc ~]# find /etc -iname "*passwd" /etc/passwd /etc/pam.d/passwd /etc/security/opasswd [root@linuxidc ~]# find /etc -iname "passwd*" /etc/passwd /etc/passwd- /etc/pam.d/passwd [root@linuxidc ~]# find /etc -iname "passwd?" /etc/passwd- [root@linuxidc ~]# find /etc -iname "passwd[[:place:]]" [root@linuxidc ~]#
(2)根据文件从属关系查找
-user username:查找属主指定用户的所有文件;
-group groupname: 查找属组指定用户的所有文件;
-uid UID:查找属主指定UID的所有文件;
-gid GID:查找属组指定GID的所有文件; #find /etc -gid 5000
-nouser:查找没有属主的文件 #find /etc -nouser
-ngroup:查找没有属组的文件 #find /etc -nogroup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25