语 法: find [选项] [参数]
find [指定查找目录] [查找规则] [查找完后执行的action]
find指令在指定目录下查找文件。find指令还能够对查找到的文件执行指定的操作,这种功能是通过调用其他Linux指令来实现的。使用find指令时必须指定一个查找的起始目录,find指令将从指定目录向下递归地遍历其各个子目录,将满足查找条件的文件显示在标准输出设备(通常是显示终端)或者对这些文件采取指定的操作
选项说明:
选 项 | 功 能 |
-name <查找模式> | 按照指定的文件名查找模式查找文件 |
-lname <查找模式> | 按照指定的文件名查找模式查找符号链接 |
-gid <组ID> | 查找属于指定组ID的所有文件 |
-uid <用户ID> | 查找属于指定用户ID的所有文件 |
-group <组名> | 查找属于指定组名的所有文件 |
-user <用户名> | 查找属于指定用户名所有的文件 |
-empty | 查找文件大小为0的目录或文件 |
-path <查找模式> | 按照指定的路径查找模式查找文件 |
-perm <权限模式> | 按照指定的权限模式的查找文件和目录 |
ize <文件大小> | 按照指定的文件大小查找文件。 “文件大小”的默认单位为块 (每块512字节) |
-type <文件类型> | 按照指定的文件类型查找文件, 支持的文件类型如下: b 块设备文件(block device); c 字符设备文件(character device); d 目录(directory);p 命名管道(FIFO); f 普通文件; l 符号链接文件(symbolic links); s 网络套接字文件(socket) |
-xtype <类型> | 仅查找符号连接文件,其他功 能与“-type”选项相同 |
-amin <分钟数> | 查找指定“分钟数”以前被访问过的所有文件 |
-atime <天数> | 查找指定“天数”以前被访问过的所有文件 |
-cmin <分钟数> | 查找指定“分钟数”以前被修改 过文件状态的所有文件 |
-ctime <天数> | 查找指定“天数”以前被修改过 文件状态的所有文件 |
-mmin <分钟数> | 查找指定“分钟数”以前被修改 过文件内容的所有文件 |
-mtime <天数> | 查找指定“天数”以前被修改过 文件内容的所有文件 |
-exec 指令名称 {} \; | 用指定的Linux指令操作查找到的文件。 “{}”表示将查找到的文件作为Linux 指令的参数;“\;”是固定字符,放在 find指令的最后。提示用户进行确认 |
-ok 指令名称 {} \; | 用指定的Linux指令操作查找到的文件。 语法与“-exec”选项相同。直接执行 操作而不提示用户进行确认 |
-ls | 详细列出找到的文件 |
-fprintf <文件名> | 不在终端打印查找到的文件信息, 而是其保存到指定的文件中 |
| 在标准输出设备上显示查找到的文 件信息,这是默认选项,可以省略 |
-printf <格式> | 指定显示查找结果的格式,与C语 言的“printf”函数格式输出语法相似 |
实例:
1. 查找/etc /tmp 下名为passwd的文件
find /etc /tmp -name passwd
2. 根据属组来找
find /tmp -uid 500 //查找uid是500 的文件
find /tmp -gid 1000 // 查找gid是1000的文件
3. find和-a and -o and –not的使用
find /tmp -not -usr root
4.根据文件时间戳的相关属性来查找文
find /tmp –atime +5 //表示查找在五天内没有访问过的文件
find /tmp -atime -5 //表示查找在五天内访问过的文件
5.根据文件权限查找
find /tmp -perm 755 //查找在/tmp目录下权限是755的文件
find /tmp -perm +222 //表示只要有一类用户(属主,属组,其他)的匹配写权限就行
find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
6.根据大小来查找文件
find /tmp -size 2M //查找在/tmp 目录下等于2M的文件
find /tmp -size +2M //查找在/tmp 目录下大于2M的文件
find /tmp -size -2M //查找在/tmp 目录下小于2M的文件
7. -nouser and -nogroup
find / -nogroup –a –nouser //在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)
8. [查找完执行的action]
# -print //默认情况下的动作
# -ls //查找到后用ls 显示出来
# -ok [commend] //查找后执行命令的时候询问用户是否要执行
# -exec [commend] //查找后执行命令的时候不询问用户,直接执行
find /tmp -atime +30 –exec rm –rf {} \; #删除查找到的超过30天没有访问过文件
find /tmp -name "*.old" | xargs chmod 700