一、locate:根据键值数据库模糊匹配,找路径
1.命令工作模式
(1)模糊查找
依赖于事先构建好的索引库,索引构建过程需要遍历整个根文件系统,占CPU使用资源
(2)无法实施更新
查找的是过去某一时刻更新的数据库文件,查找路径
系统自动更新:一般为每日系统例行性任务完成更新
手动更新数据库:uodatedb
(3)查找速度快
通过对创建的索引库的匹配遍历查找文件路径,查询速度哦哒哒增加
2.格式:locate [OPTION]... PATTERN…
-b:只匹配路径中的基名
-c:统计出共有多少个符合条件的文件数量
-r:基于基本正则表达式进行匹配操作
二、find:实时遍历文件系统查找文件
1.工作特性:实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找
查找速度略慢;精确查找;实时查找
2.使用格式:find
[OPTION] [查找起始路径] [查找条件] [处理动作]
(1)查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
(2) 查找条件:指定的查找标准,可以是选项或者测试是条件
测试条件(查找标准):根据文件名、大小、类型、从属关系、权限等等标准进行
结果通常为布尔型("true", "false")
1)根据文件名查找:
-name "pattern" :根据文件名查找
-iname
"pattern":根据文件名(忽略大小写)查找
注意:默认仅支持glob风格的通配符;*, ?, [],
[^]
-regex
pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名;
2)根据文件从属关系查找:
-user
USERNAME:查找属主指定用户的所有文件;
-group
GRPNAME:查找属组指定组的所有 文件;
-uid
UID:查找属主指定的UID的所有文件;
-gid
GID:查找属组指定的GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
3)根据文件的类型查找:-type TYPE:
4)根据文件的大小查找:
-size [+|-]#UNIT 常用单位:k, M, G
#UNIT:(#-1, #],表示#-1(一个单位数量变化)范围内的文件
-#UNIT:[0,#-1],小于
+#UNIT:(#, oo),大于
5)根据时间戳查找:
以“天”为单位:-atime|-mtime|-ctime [+|-]#
#:[#, #-1)
-#:(#,
0]
+#:(oo,
#-1]
以“分钟”为单位:-atime|-mtime|-ctime [+|-]#
6)根据权限查找:
-perm [/|-]mode
mode:精确权限匹配;
/mode:"或"关系;任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;
-mode:"与"关系;每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;
注意:三位数字表示就为权限之间的逻辑关系
7)组合测试:将多个条件按逻辑顺序组合起来使用
与:-a, 默认组合逻辑;
或:-o
非:-not, !
(3)处理动作:对符合查找条件的文件做出的操作;默认为输出至标准输出;
-print:输出至标准输出;默认;
-ls:输出文件的详细信息;
-delete:删除查找到的文件;
-fls
/PATH/TO/SOMEFILE:保存查找到所有文件的长格式信息至指定文件中;
-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND命令;每次操作都由用户进行确认;
-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND命令;无需每次用确认
注意:find查找出所有符合条件的文件路径,并一次性传递给后面的命令;
find | xargs COMMAND:解决有些命令接受过长参数会执行会失败问题
三、对于find查找时在权限方面的理解总结
总结:
1.三个数字代表,每个数字代表的是一类用户的三个权限,共九个权限位
2.find的测试条件是一种查找条件的表达式,其匹配显示的结果为状态为真的结果,即符合条件的为真,否则为假。
3.三位数字表示的九位权限之间是有逻辑关系的。
-perm mode:所写的权限要全部满足条件
-perm /mode:三位数值所表现的九位关系是或者
从8bitys二进制角度来解析满足其中一组状态即可
用现在的权限对位减去mode,必须有一个不为负数
-perm -mode:三位数值所表现的九位关系是与的,也就是说同时权限至少三个都要满足
用现在的权限对位减去mode,任何一个不能出现负数