1.1 find 命令介绍

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。

但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。

所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

1.1.1 命令格式

find 搜索路径 [参数] 搜索内容

1.1.2 命令参数

参数 作用
-name 按名字查找
-type 按文件类型查找
-size [+-] 按文件大小查找
-mtime [+-] 按修改时间查找
-exec 对查找的结果进行处理
-o 并集查找
-a 组合查找
! 取反

1.2 find 使用

1.2.1 -name 按照文件名搜索

1)使用语法:

# find 查找路径 -name 查找内容

2)使用实例:

# 全名称查找
find /root/ -name "oldboy.txt"

# 模糊查找
find /root/ -name "oldboy*"

1.2.2 -type 按文件类型查找

1)文件类型:

字符 文件类型
f 普通文件
d 目录文件
l 软连接
c 字符设备
b 块文件
c socket文件

1)使用语法:

# find 查找路径 -type 文件类型字符

2)使用实例:

# 查找 /root/ 目录下的目录文件
find /root/ -type d

# 查找 /root/ 目录下的普通文件
find /root/ -type f

1.2.3 -size [+-] 按文件大小查找

1)文件大小单位

单位 含义
b 按照 512 Byte 查找(默认单位)
c 按照字节查找
k 按照KB单位搜索
M 按照MB单位搜索
G 按照GB单位搜索

2)使用语法

# find 查找路径 -size 文件大小[大小单位]

3)使用实例:

# 按照字节查找
find /root/ -size +1000c
find /root/ -size -1000c

# 按照KB单位查找
find /root/ -size +1k
find /root/ -size -1k

# 按照MB单位搜索
find /boot/ -size +1M
find /root/ -size -1M

# 按照GB单位搜索
find / -size +1G
find /root/ -size -1G

1.2.4 -mtime [+-] 按文件修改时间查找

1)使用语法:

# find 查找路径 -mtime [+-]天数

2)使用实例:

# 查找7天前修改过的文件
find /root/ -mtime +7

# 查找7天内修改过的文件
find /root/ -mtime -7

# 查找第7天修改过的文件
find /root/ -mtime 7

1.2.5 -exec 对查找的结果进行处理

1)使用语法:

注意这里的"{}"和"\;"是标准格式,只要执行"-exec"选项,这两个符号必须完整输入

# find 查找路径 [选项] 查找内容 -exec 命令2{}\;

2)使用实例:

# 创建一个空白且占500MB的文件
dd if=/dev/zero of=test.log bs=1M count=500

# 删除 /root/ 目录下大小为500MB的文件
find /root/ -size 500M -exec rm -f {}\;

1.2.6 -o 并集查找

1)使用语法:

# find 查找路径 [选项] 查找内容 -o [选项] 查找内容

2)使用实例:

# 查找文件大小大于100MB的文件,或者是目录文件
find /root/ -size +100M -o -type d

1.2.7 -a 组合查找

1)使用语法:

# find 查找路径 [选项] 查找内容 -a [选项] 查找内容

2)使用实例:

# 查找文件大小大于100MB的文件,并且是普通文件
find /root/ -size +100M -a -type f

1.2.8 ! 对查找的内容取反

1)使用语法:

# find 查找路径 ! [选项] 查找内容

2)使用实例:

# 查找不小于100MB的文件
find /root/ ! -size -100M