一、简述
文件查找:在文件系统上查找、搜索符合条件的文件。
find:实时查找工具,通过遍历指定位置、路径下的文件系统中符合条件的文件完成文件查找。
find工作特点:查找速度稍慢、精确查找、实时查找。
当所有文件都成功处理时 find 退出并返回状态值0。如果发生错误则返回一个大于0的值。
二、使用
1.语法
find [path...] [expression]
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径 | 指定具体目标路径,默认为当前目录 |
---|---|
查找条件 | 指定查找的标准,可以是文件名、大小、类型、权限、时间戳等标准,默认找出指定路径下的所有文件 |
处理动作 | 对符合条件的文件做的操作,默认是输出至屏幕 |
2.查找条件
2.1)根据文件名查找
用法 | 释义 |
---|---|
-name FILE_NAME | FILE_NAME支持使用glob(*,?,[],[^]) |
-iname FILE_NAME | 不区分FILE_NAME的字母大小写 |
-regex PATTERN | 以PATTERN匹配整个文件路径字符串,不仅仅是文件名称 |
2.2)根据属主、属组查找
用法 | 释义 |
---|---|
-user USER_NAME | 查找指定属主的文件 |
-group GROUP_NAME | 查找指定属组的文件 |
-uid USER_ID | 查找属主为UID的文件 |
-gid GROUP_ID | 查找属组为GID的文件 |
-nouser | 查找没有属主的文件 |
-nogroup | 查找没有属组的文件 |
2.3)根据文件类型查找
用法 | 释义 |
---|---|
-type f | 查找普通文件 |
-type d | 查找目录文件 |
-type l | 查找符号链接文件 |
-type s | 查找套接字文件 |
-type b | 查找块设备文件 |
-type c | 查找字符设备文件 |
-type p | 查找管道文件 |
2.4)根据文件大小查找
-size [+|-]#UNIT
UNIT:k,M,G
用法 | 释义 |
---|---|
#UNIT | (#-1,#]UNIT |
-#UNIT | [0,#-1]UNIT |
+#UNIT | (#,+∞)UNIT |
2.5)根据时间戳查找
单位“天” | 单位“分钟” | 功用 |
---|---|---|
-atime [+|-]# | -amin [+|-]# | 文件被读取过,被访问过 |
-mtime [+|-]# | -mmin [+|-]# | 文件内容被修改过,改动过 |
-ctime [+|-]# | -cmin [+|-]# | 文件权限被修改过 |
用法 | 释义 |
---|---|
# | [#,#+1) |
+# | [#+1,∞) |
-# | [0,#) |
2.6)根据权限查找
用法:-perm [+|-]MODE | CentOS 6 | CentOS 7 | 释义 |
---|---|---|---|
精确查找 | MODE | MODE | 精确权限匹配 |
逻辑“或” | +MODE | /MODE | 只需要(u,g,o)对象权限中有一位匹配即可 |
逻辑“与” | -MODE | -MODE | 每一类对象都必须同时匹配,拥有指定权限的匹配标准 |
3.组合条件
与 | -a |
---|---|
或 | -o |
非 | !,-not |
4.处理动作
选项 | 释义 |
---|---|
默认的处理动作,显示至屏幕 | |
-ls | 类似于对查找到的文件执行“ls -l”命令 |
-delete | 删除查找到的文件 |
-fls /PATH/TO/FILE_NAME | 查找到的所有文件的长格式信息保存至FILE_NAME中 |
-ok COMMAND {} \ | 对查找到的每个文件执行“COMMAND”命令,对于每个文件执行命令之前,都会交互式地要求用户确认 |
-exec COMMAND {} \ | 对查找到的每个文件执行“COMMAND”命令,“{}”用于引用查找到的文件名称本身 |
注:find传递查找到的文件至后面指定的命令时,查找到的所有符合条件的文件一次性传递给后面的命令,有些命令不能接受过多参数,此时命令执行可能会失败。解决此问题的办法可以使用类似如下格式:
~]# find | xargs COMMAND
三、补充
摩根定律
两集合交集补集等于各自补集并集,两集合并集补集等于各自补集交集。
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
locate命令
工作原理:依赖于实现构建好的索引,索引的构建是在系统较为空闲时自动进行(周期性任务),或者手动更新数据库(updatedb)。
索引的构建过程需要遍历整个跟文件系统,极消耗资源。
工作特点:查找速度快,模糊查找,非实时查找。
使用格式:~]# locate KEYWORD