find 命令(二)
下面将介绍如何根据文件类型、权限、所有者及操作符来查找匹配文件。根据文件类型来查找文件,使用-type 选项,常见 find 文件类型见下表。
文件类型 | 描述 |
b | 块设备文件 |
c | 字符设备文件 |
d | 目录 |
f | 普通文件 |
l | 符号链接 |
根据文件权限查找文件,使用-perm 选项。所有者使用-user 选项。另外,find 命令可以通过逻辑操作符来创建更复杂的逻辑关系,例如 find 命令(一)中的例三就使用了操作符-or。find 命令的逻辑操作符见下表。
操作符 | 描述 |
-and | 匹配如果操作符两边的测试条件都是真。可以简写为-a。注意若没有使用操作符,则默认使用 -and |
-or | 匹配若操作符两边的任一个测试条件为真。可以简写为 -o。 |
-not | 匹配若操作符后面的测试条件为假。可以简写为一个感叹号(!) |
() | 测试条件和操作符组合起来未更大的表达式。用来控制逻辑计算的优先级。默认情况下,find命令按照从左到右的顺序计算。经常有必要重写默认的求值顺序,以得到期望的结果。即使没有必要,有时候包括组合起来的字符,对提高命令的可读性是很有帮助的。注意因为圆括号字符对于shell来说有特殊含义,所以命令行中使用它们,必须用引号引起来,才能作为实参传递给find命令。通常反斜杠字符被用来转义圆括号字符。 |
(1)常用范例
例一:打印当前目录下所有权限为 777 的 php 文件(web 服务器上的 php 文件一般需要执行权限),可以使用如下命令:
find . -type f -name "*.php" -perm 777
例二:打印当前目录下 root 用户拥有的所有文件,可以使用如下命令:
find . -type f -user root
例三:打印当前目录下权限不是 777 和 664 的所有文件,可以使用如下命令:
find . -type f \( ! -perm 777 -and ! -perm 644 \)