文件查找

前言:我们为什么要学习文件查找?

每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆文件”的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉,其实想玩linux的你更要牢牢掌握这个命令,因为linux不像windows那样有固定的文件名后缀,并且因为linux阵营下百家争鸣的特性,一个相同的文件在不同的发行版,可能会有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上将会顺利很多,同时你会发现linux下文件查找功能其实很简单,而且要比windows下查找功能强大很多很多!好,下面进入正题
————————————————————————————————————————————————————————————
Linux下文件查找有两类:find 和 locate

两者的工作特点有如下区别:

locatefind
模糊查找精确查找
非实时查找实时查找
查找速度快查找速度略慢
可能只搜索用户具备读和写权限的文件和目录可能只搜索用户具备读和写权限的文件和目录
查询系统上预建文件索引数据库通过遍历指定路径完成搜索

————————————————————————————————————————————————————————————
一、locate 查找

查询系统上预建的文件索引数据库
/var/lib/mlocate/mlocate.db
locate查找依赖于事先构建的索引,索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb),索引构建过程需要遍历整个根文件系统,极消耗资源,所以我们建议在非必要的情况下,一般不要手动更新数据。
locate 的基本用法:
locate keyword
有用的选项
-i 不区分大小写的搜索
-n N只列举前N个匹配项目
locate conf
搜索名称或路径中带有“conf”的文件
locate -r ‘.conf$’<——使用Regex来搜索以“.conf”结尾的文件
二、find 查找

语法:

find [OPTION]… [查找路径] [查找条件] [处理动作]
|查找路径:|指定具体目标路径;默认为当前目录|
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕

1.根据层级搜索

-maxdepth level 最大搜索目录深度,指定目录为第1级
-mindepth level 最小搜索目录深度
例子

find / -mindepth 2 -maxdepth 2 -name "*.conf"

这里写图片描述

说明:我们指定的最大搜索目录深度为2层,查找最小的也为2层,所以搜索出来的结果都是两层目录。

2. 根据文件名和inode查找

-name “文件名称”:支持使用glob *,?,[],[^]
-iname n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

find / -inum 2

这里写图片描述

说明:搜索根目录下的inode号为2的文件,同时我们知道每个分区的根目录的节点编号为2
,其他的自己多练习吧,这里我不再每个举例说明了。

3. 根据属主、属组查找:

-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uidUserID:查找属主为指定的UID号的文件
-gidGroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

find /home -user zhang

这里写图片描述

说明:查找home目录下的所属主为用户zhang的文件或者目录

ll -d /home/zhang

这里写图片描述

说明:可以看到文件所属主为zhang。

4. 根据文件类型查找:

-type TYPE:
•f: 普通文件
•d: 目录文件
•l: 符号链接文件
•s:套接字文件
•b: 块设备文件
•c: 字符设备文件
•p: 管道文件

find /etc/ -type d 

这里写图片描述

说明:查找/etc/目录下所有目录文件

5. 根据时间戳查找:

以“天”为单位;
 -atime[+|-] #————–> 如果#为10天
  #: [#,#+1)————– ->访问时间为大于等于10天,小于11天的文件
  +#: [#+1,∞]————- ->访问时间为大于等于11天的文件
  -#: [0,#)—————— ->访问时间为小于等于10天的文件
 -mtime——————修改时间(天)
 -ctime——————-创建时间(天)
以“分钟”为单位:
 -amin
 -mmin
 -cmin

find /root/ -cmin -1   #在家目录下创建一个文件1.txt

这里写图片描述

说明:在家目录下搜索,在一分钟内创建的文件,如图所示,搜索出刚刚创建的1.txt文件。

6. 根据权限查找:

-perm [/|-]MODE
MODE: 精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰
-MODE:每一类对象都必须同时拥有指定权限,与关系
0 表示不关注
•find-perm755会匹配权限模式恰好是755的文件
•只要当任意人有读权限时,find-perm+222就会匹配
•只有当每个人都有写权限时,find-perm-222才会匹配
•只有当其它人(other)有写权限时,find-perm-002才会匹配

find / -perm -222

这里写图片描述

说明:从根目录下取出user,group,other 都有写权限的文件,为了方便查看,取出显示结果的前10行,结果如图所示。我们可以查看/selinux/目录下的null文件的属性验证一下

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值