linux上find命令 linux find 命令详解( 五 )


-type选项最常用的参数如下:
find /usr -type d -name 'python*'检索 /usr 下所有文件名以python开头的 目录
find 命令支持-empty选项用来检索 为空 的文件或目录 。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录 。
find ~ -type d -empty检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作) 。
如需要检索 /usr 下所有文件名 不 以.txt为后缀的文件 。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以“翻转”任何其他的筛选条件,如:
find /usr -type f ! -empty检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用-user选项 。
find / -type f -user starky检索根目录下所有属主为 starky 的文件
类似于-user 选项 ,  -group选项则可以根据文件或目录的 属组 进行检索 。
有些时候,需要根据文件创建或修改的时间进行检索 。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的-mtime , -atime和-ctime三个选项 。
这三个选项的使用遵循以下示例中的规则:
find /usr -type f -mtime 2检索 /usr 下两天前被修改过的文件
如果觉得-mtime等选项以 天 为单位时间有点长,还可以使用-mmin , -amin  ,  -cmin三个选项:
find /usr -type f -mtime +50 -mtime -100检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
-size选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……) 。
表示文件大小的单位由以下字符组成:
另外,还可以使用+或-符号表示 大于 或 小于 当前条件 。
find / -size +1G检索文件大小高于 1 GB 的文件
find 命令可以使用-perm选项以文件权限为依据进行搜索 。
如需要检索 /usr 目录下权限为rwxr-xr-x的文件 , 可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目录下所有权限为r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
find /usr -perm a=rx
很多时候,我们只想匹配文件权限的一个 子集。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限 , 而不用管其读写权限是什么 。
上述的需求可以通过以下命令实现: find / -type f -perm /a=x
其中a=x前面的/符号即用来表示只匹配权限的某个子集(执行权限) , 而不用关心其他权限的具体设置 。
-perm选项也支持数字形式的文件权限标记 。
find /usr -perm 644搜索 /usr 目录下权限为644 (即rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大 。可以使用-maxdepth限制 find 命令递归的层数 。
find / -maxdepth 3搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转。
实际上 find 命令支持“and”和“or”两种逻辑运算,对应的命令选项分别是-a和-o。通过这两个选项可以对搜索条件进行更复杂的组合 。
此外还可以使用 小括号 对搜索条件进行 分组。注意find命令中的小括号常需要用 单引号 包裹起来 。因小括号在 Shell 中有特殊的含义 。
如检索 /usr 下文件名以python开头且类型为目录的文件
find /usr -type d -name 'python*'
该命令等同于:
find /usr -type d -a -name 'python*'

推荐阅读