1、简介
find 命令功能是进行查找
find 命令主要作用是沿着文件层次结构向下遍历、匹配符合条件的文件,并执行相应的操作

2、用法/命令格式


    1. Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression

3、常用参数解析 — 参数 选项
**
-H、-L 和 -P 选项 用于 符号 连接 处理;
如果 搜索 路径 没有 被 指定,则默认 当前 所在 路径 为 搜索路径

4 、常用参数解析 — 参数 表达式
**-print
默认 -print 参数

-exec
-exec 是 find 命令对找到的文件执行的动作,这个动作就是对找到的文件执行命令;在这里说明一下{}和;,
{}其实它就是一个占位符,在 find 命令的执行过程中会不断地替换成当前找到的文件;
而”;” 是-exec 的命令结束标记,因为规定-exec 后面的命令必须以;结束,
但;在 shell 中有特殊含义,必须要转义,所以写成\;
Global options — 全局 表达式
全局表达式 影响 任何 结果输出,通常 返回 true

-type

  • 字母 “f” 表示该文件是一个普通文件
  • 字母 “l” 表示该文件是一个链接文件
  • 字母 “b” 表示该文件是块设备文件(block)
  • 字母 “c” 表示该文件是一个字符设备文件(character)
  • 字母 “d” 表示该文件是一个目录
  • 字母 “p” 表示该文件为命令管道文件
  • 字母 “s” 表示该文件为sock文件

例子:

在/目录中查找名称为test的所有目录。
#find -type d -name “test”

Positional options — 位置(正则) 表达式
Positional optiona affect only tests or actions which follow them. Positional options always return true.

Operators — 逻辑 表达式
Operators join together the other items within the expression. They include for example -o (meaning logical OR) and -a (meaning logical AND).

备注

  • -and:匹配如果操作符两边的测试条件都是真。可以简写为-a。注意若没有使用操作符,则默认使用-and
  • -or:匹配若操作符两边的任一个测试条件为真。可以简写为 -o
  • -not:匹配若操作符后面的测试条件是假。可以简写为一个感叹号(!)
  • ():把测试条件和操作符组合起来形成更大的表达式。这用来控制逻辑计算的优先级。默认情况下, find命令按照!从左到右的顺序计算。经常有必要重写默认的求值顺序,以得到期望的结果。即使没有必要,有时候包括组合起来的字符,对提高命令的可读性是很有帮助的。注意因为圆括号字符对于shell来说有特殊含义,所以在命令行中使用它们的时候,它们必须用引号引起来,才能作为实參传递给find命令。通常反斜杠字符被用来转义圆括号字符

- TEST
-inum — inode number

  1. ## 根据 inode 搜索文件
  2. # find /etc -inum 786776
  3. # find /etc -inum 786776 /etc/hosts

5
范例

5.1 打印 当前 目录 文件 列表信息**

  1. # -print 也可 不写,一般 默认 打印
  2. # find . [-print]

5.2 模糊 匹配

  1. ## -i : 忽略 大小写
  2. ## *、?: 模糊匹配,
  3. * 匹配 多个 任意字符,
  4. ?匹配 单个 任意字符
  5. # find . [-i] -name "*.tx?" [-print]

5.3 多个 文件 类型查找

  1. ## -or : 逻辑 或
  2. ## !: 逻辑 非
  3. # find . \( -name "*.txt" -or ! -name ".csv" \)

5.4 联合 查找 并 查看
**

  1. ## -perm: 用户权限
  2. ## -user: 用户名
  3. # find . -type f \( -name "*.php" -perm 755 -or ! -user root \) -exec ls -l {} \;

5.5 查找 大文件

  1. # find . -type f -size +800M

备注
-exec 是 find 命令对找到的文件执行的动作,这个动作就是对找到的文件执行命令,上面的命令就是 ls -l {}。在这里说明一下{}和;,{}其实它就是一个占位符,在 find 命令的执行过程中会不断地替换成当前找到的文件,相当于”ls -l 找到的文件”。
而;是-exec 的命令结束标记,因为规定-exec 后面的命令必须以;
结束,但;在 shell 中有特殊含义,必须要转义,所以写成\;

联合语句
#查找所有777个权限文件,并使用chmod命令将权限设置为644
#find / -perm 777 -print -exec chmod 644 {} \;

#查找和删除多个文件,如.txt,然后使用。
#find . -type f -name “*.txt” -exec rm -f {} \;

#查找所有空目录
#find / -type d -empty

#查找所有被修改超过50天以及少于100天的文件。
find . -name “a.txt” -mtime +50 -mtime -100

查找最近1小时内更改的所有文件
find / -cmin -60

#查找超过100MB的所有.mp4文件,并使用一个命令删除它们
#find / -type f -name “*.mp4” -size +100M -exec rm -f {} \;