引言:想查哪就查哪,蒙多
作用
根据条件查找某个路径下符合规则的文件、文件夹信息
基础格式
基础语法格式:
find [路径] [选项] [操作]
常用选项
选项 | 含义 |
---|---|
-name | 根据文件名查找 |
-perm | 根据文件权限查找 |
-prune | 该选项可以排除某些查找目录 |
-user | 根据文件属主查找 |
-group | 根据文件属组查找 |
-mtime -n | +n | 根据文件更改时间查找 |
-nogroiup | 查找无有效属组的文件 |
-nouser | 查找无有效属主的文件 |
-newer file1 !file2 | 查找更改时间比file1新但是比file2旧的文件 |
-type | 按照文件类型查找 |
-size -n | +n | 按文件大小查找 |
-mindepth n | 从n级子目录开始搜索 |
-maxdepth n | 最多搜索到n级子目录 |
场景实操
注:以下场景均以 /tmp 文件夹为示例,实际使用过程中,请替换成要搜索的路径
根据文件名查找文件(常用)
# 查找 /tmp 目录下以abc开头的文件
find /tmp -name 'abc*'
# 查找 /tmp 目录下所有的json文件
find /tmp -name '*.json'
# 当不填写路径时,默认当前路径,等同于 find .
find -name 'abc*'
# 使用 -iname忽略大小写匹配
find /tmp -iname 'abc*'
根据文件归属查找文件
# 查找/tmp目录下,属主为root的文件
find /tmp -user root
# 查找/tmp目录下,属组为root的文件
find /tmp -group root
根据文件类型查找文件
-type 可用值有如下选项:
- f 文件
- d 目录
- c 字符设备文件
- b 块设备文件
- l 链接文件
- p 管道文件
# 查找/tmp目录下,名字中带有abc的文件
find /tmp -name '*abc*' -type f
# 查找/tmp目录下,名字中带有abc的文件夹
find /tmp -name '*abc*' -type d
根据文件大小查找文件
-size 可用值有如下选项:
- +n 大小大于n的文件
- -n 大小小于n的文件
- n大小等于n的文件(部分发行版匹配不到,不推荐使用)
# 查找/tmp目录下小于200字节的文件
find /tmp -size -200c
# 查找/tmp目录下大于1M的文件
find /tmp -size +1M
可选的单位选项:
- b 块,1b=512字节
- c 字节 1c=1字节
- w 2字节 1w=2字节
- k 千字节 1k=1024字节
- M 兆字节 1M=1024*1024字节
- G 1G=102410241024 字节
根据修改时间查找文件
-mtime 可用值有如下选项:
- -n n天以内修改的文件
- +n n天以外修改的文件
- n 正好n填修改的文件
-mmin 可用值有如下选项:
- -n n分钟以内修改的文件
- +n n分钟以外修改的文件
# 查找/tmp目录下30天之前修改名称包含abc的文件
find /tmp -name '*abc*' -mtime +30 -type f
# 查找/tmp目录下3分钟内修改的文件
find /tmp -mmin -3 -type f
过滤查找目录层级
# 从/tmp的第2级子目录开始搜索,名称中包含abc的文件
find /tmp -mindepth 2 -name '*abc*'
# 搜索/tmp中名称中包含abc的文件,最多搜索到3级目录
find /tmp -maxdepth 3 -name '*abc*'
目录层级过滤条件要放到最前面,这样匹配之前就过滤掉了不需要匹配的目录,效率最高