一、概述与选项¶
find 在指定目录中查找文件
| find命令选项 | 说明 |
|---|---|
| -type | 什么类型的文件 f表示文件 d表示目录 |
| -name | 文件名 |
| -size | 根据大小查找文件 +表示大于 -表示小于 +10k(小写K) +10M(大写) G |
| -mtime | 根据修改时间查找文件 |
二、基础案例¶
格式:find 目录 指定类型 指定名字
2.1 案例01-02 精确查找与模糊查找¶
#案例01 在/etc/目录中找出文件名叫hostname文件
精确查找,指定文件名。
find /etc/ -type f -name 'hostname'
#案例02 找出/etc/下面以.conf结尾的文件
find /etc/ -type f -name '*.conf'
#找包含oldboy的文件: (可能是开头,可能是结尾,可能是中间)
find /etc/ -type f -name '*oldboy*'
说明:星号*表示任意符号或所有
2.2 案例03 根据大小查找¶
-size选项,size大小的意思.根据大小查找文件
- 大于 使用+加号 -size +10k 大于10k文件
- 小于 使用-减号 -size -10k 小于10k文件
#案例03 根据大小找出文件 在/etc/目录下面找出大于10kb的
find /etc/ /tmp/ -type f -size +10k
2.3 案例04 根据时间查找¶
一般是根据文件的修改时间进行查找,未来主要用于查找系统日志文件,旧的日志文件。7天之前的文件。
-mtime选项
- +7表示找出7天之前的文件(修改时间是7天之前)
- -7表示最近7天内的文件
#案例04 根据修改时间找出文件
根据相对的时间进行查找,比如修改时间最近7天的文件、修改时间是大于30天
#找出/etc/目录下以.conf结尾的,7天之前的文件。
find /etc/ -type f -name "*.conf" -mtime +7
find /oldboy/ -type f -mtime -7 #最近7天
find /oldboy/ -type f -mtime +7 #7天之前的

2.4 案例05 综合案例¶
#案例05 找出/etc/中以.conf结尾大于10kb修改时间是7天之前
find /etc/ -type f -name '*.conf' -size +10k -mtime +7
2.5 案例06-07: 进阶选项¶
#案例06 查找文件的时候指定最多找多少层目录,这里是指2层
find / -maxdepth 2 -type f -name "*.conf"
#案例07 查找的时候不区分文件名的大小写
find / -type f -iname "*.conf"
参数说明:
- -maxdepth 1 选项位置第1个,指定find命令查找的最大深度(层数),不加上就是所有层。
说明:find还可以根据用户名查找,查找属于某个用户的文件。 find还可以根据权限查找。
三、find命令与其他命令配合¶
案例:
-
核心:find+简单命令:find找出想要的文件删除,看详 细信息,显示文件内容,过滤。
-
find+打包压缩:find找出文件进行打包压缩
- find+cp/mv:find找出文件后复制或移动
3.1 案例08-找出/etc/下面以.conf结尾的文件后显示详细信息¶
这里主要用到find+ls配合,后面的其他配合find+rm, find+cat/head/tail/,find+grep都类似。
方法一:find + ``
ls -lh `find /etc -type f -name '*.conf'`
ls -lh $(find /etc -type f -name '*.conf')
方法二:find + xargs
find /etc -type f -name '*.conf' | xargs ls -lh

方法三:find + -exec
find /etc -type f -name '*.conf' - exec ls -lh {} \;
参数说明:
- -exec:find选项,表示find找出文件后要执行的命令
- {}:表示前面find命令找出的文件
- \;表示命令结束,固定格式
3.2 案例09-find与打包压缩¶
找出/etc/下面以.conf结尾的文件打包压缩成find.tar.gz
方法一:find + ``
tar zcf find.tar.gz `find /etc -type f -name '*.conf'`
方法二:find + | xargs
find /etc -type f -name '*.conf' | xargs tar zcf find.tar.gz
方法三:find + exec
find /etc -type f -name '*.conf' - exec tar zcf find.tar.gz {} +
注意:这里方法三中-exec \;执行方式 1个文件1个文件的压缩,所以需要替换成+
3.3 案例10-find与复制或移动¶
找出/etc/下面以.conf结尾的文件复制到/tmp下面
方法一:find + ``
#命令格式
cp 源 ....... 目标
#具体命令
cp `find /etc -type f -name '*.conf'` /tmp/
方法二:find + |xargs
#命令格式
find xxx |xargs cp /tmp/
cp -t 目标 源文件或目录
#具体命令
find /etc -type f -name '*.conf' | xargs cp -t /tmp/
注意:这里方法二中xargs会将查到的文件放到/tmp/目录后面,而正常来说cp 文件 /tmp/。所以需要使用-t参数修改格式,变成cp -t /tmp/ 源文件
方法三:find + -exec
#具体命令
find /etc -type f -name '*.conf' - exec cp {} /tmp/ \;
参数说明:
\;是用来终止-exec选项的标记