find命令格式
man文件中给出的find命令格式为:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
不过这几个选项[-H] [-L] [-P] [-D debugopts] [-Olevel]很少用到,再次总结的是简化命令:
find [path...] [expression]
- path:查找的文件路径,默认为当前目录,/表示根目录,.表示当前目录,..表示上级目录
- expression:表达式可以分为-options[-print -exec -ok]
- -options,find命令的常用选项(本文重点说明)
- -print,将find命令匹配的文件输出到标准输出
- -exec,对find命令匹配的文件执行该参数给出的shell命令,相应命令的形式为'command' { } \(注意\前有个空格)
- -ok,功能和-exec相同,不过在执行每个命令之前需要用户确认
-options常用选项列表和意义
- -name <表达式> 根据文件名查找文件
- -iname <表达式> 根据文件名查找文件,忽略大小写
- -path <表达式> 根据路径查找文件
- -ipath <表达式> 根据路径查找文件,忽略大小写
- -amin <分钟> 过去N分钟内访问过的文件
- -atime <天数> 过去N天内访问过的文件
- -cmin <分钟> 过去N分钟内修改过的文件
- -ctime <天数> 过去N天内修改过的文件
- -mmin<分钟>过去N分钟曾被更改过的文件或目录
- -mtime<天数>过去N天曾被更改过的文件或目录
- -anewer <参照文件> 比参照文件更晚被读取过的文件
- -cnewer <参照文件> 比参照文件更晚被修改过的文件 同--newer
- -size <大小> 根据文件大小查找文件,单位b c w k M G
- -type <文件类型> 根据文件类型查找文件。b 块设备 c 字符设备 d 目录 p 管道文件 f 普通文件 l 链接 s 端口文件
- -user <用户名> 按归属用户查找文件
- -uid <uid> 按UID查找文件
- -group <群组名> 按归属群组查找文件
- -gid <gid> 按GID查找文件
- -empty 查找空文件
- -depth:从指定目录下最深层的子目录开始查找
- -maxdepth<目录层级>设置最大目录层级
- -mindepth<目录层级>设置最小目录层
- -regex<正则表达式>
- -o 或关系
- -a 与关系
- !否定关系
参数使用举例
- 在/var目录下以.txt结尾的文件名
find / var -name "*.txt"find / var -iname "*.txt" //忽略大小写
- 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . -name "*.txt" -o -name "*.pdf"
- 匹配文件路径或者文件
find /media/ -path "*debug/log" //所以以debug结尾目录下的log文件或者log目录下的所有文件
- 找出/home下不是以.txt结尾的文件
find /home ! -name "*.txt"
- 找出距离当前路径1-2层之间所有的普通文件
find . -mindepth 1 -maxdepth 2 -type f
- 当前目录下搜索出权限为777的文件
find . -type f -perm 777
- 找出当前目录下权限不是644的php文件
find . -type f -name "*.php" ! -perm 644
- 找出当前目录用户tom拥有的所有文件
find . -type f -user tom
- 找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk
- 要列出所有长度为零的文件
find . -empty
根据文件时间戳进行搜索
UNIX/Linux文件系统每个文件都有三种时间戳:
- 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间
- 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
- 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间
- 搜索最近七天内被访问过的所有文件
find /home -atime -7
- 搜索最近七天前被访问过的所有文件
find /home -atime 7
- 找出比file.log修改时间更长的所有文件(日期更靠近现在)
find . -type f -newer file.log
根据文件大小进行匹配
文件大小单元:b--块(512字节) c -- 字节 w -- 字(2字节) k -- 千字节 M -- 兆字节 G--吉字节
- 搜索大于10KB的文件
find . -type f -size +10k
- 搜索小于10KB的文件
find . -type f -size -10k