一、概述与选项

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天之前的

Aspose.Words.86f747ce-317f-40b6-b534-7c7433f45440.033

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

Aspose.Words.86f747ce-317f-40b6-b534-7c7433f45440.050

方法三: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 选项的标记