find 命令主要做用是沿着文件层次结构向下遍历、匹配符合条件的文件,并 执行相应的操做
php
find [-H] [-L] [-P] [-D {debugopts}] [-O {level}] [starting-point...] [expression]
-H、-L 和 -P 选项 用于 符号 链接 处理;若是 搜索 路径 没有 被 指定,则默认 当前 所在 路径 为 搜索路径
shell
搜索 路径 以后的 一连串的表达式 用于 匹配 搜索 的结果;若是 没有 表达式,则 默认 -print 参数 表达式
express
执行 表达式 通常 会有 反作用(例如 打印 一些 信息 输出到 标准输出 )而且 返回 true or false (取决于 执行 是否 成功);例如 -print 将 信息 输出到 标准输出
ide
默认 -print 参数
测试
-exec 是 find 命令对找到的文件执行的动做,这个动做就是对找到的文件执行命令;在这里说明一下{}和;,{}其实它就是一个占位符,在 find 命令的执行过程当中会不断地替换成当前找到的文件;而";" 是-exec 的命令结束标记,由于规定-exec 后面的命令必须以;结束,但;在 shell 中有特殊含义,必需要转义,因此写成\;
命令行
全局表达式 影响 任何 结果输出,一般 返回 true
debug
字母 "f" 表示该文件是一个普通文件
字母 "l" 表示该文件是一个连接文件
字母 "b" 表示该文件是块设备文件(block),通常置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,一类特殊文件
字母 "c" 表示该文件是一个字符设备文件(character)
字母 "d" 表示该文件是一个目录
字母 "p" 表示该文件为命令管道文件
字母 "s" 表示该文件为sock文件
code
通常不会 太复杂,暂不详细解释
blog
-and:匹配若是操做符两边的测试条件都是真。能够简写为-a。注意若没有使用操做符,则默认使用-and
-or:匹配若操做符两边的任一个测试条件为真。能够简写为 -o
-not:匹配若操做符后面的测试条件是假。能够简写为一个感吸号(!)
():把测试条件和操做符组合起来造成更大的表达式。这用来控制逻辑计算的优先级。默认状况下, find命令按照!从左到右的顺序计算。常常有必要重写默认的求值顺序,以获得指望的结果。即便没有必要,有时候包括组合起来的字符,对提升命令的可读性是颇有帮助的。注意由于圆括号字符对于shell来讲有特殊含义,因此在命令行中使用它们的时候,它们必须用引号引发来,才能做为实參传递给find命令。一般反斜杠字符被用来转义圆括号字符
get
## -print 也可 不写,通常 默认 打印 # find . [-print]
## -i : 忽略 大小写 ## *、? : 模糊匹配,* 匹配 多个 任意字符, ? 匹配 单个 任意字符 # find . [-i] -name "*.tx?" [-print]
## -or : 逻辑 或 ## !: 逻辑 非 # find . \( -name "*.txt" -or ! -name ".csv" \)
## -perm: 用户权限 ## -user: 用户名 # find . -type f \( -name "*.php" -perm 777 -or ! -user root \) -exec ls -l {} \;
# find . -type f -size +800M