find 按体积和修改时间精准搜索需注意单位符号与时间计算逻辑:-size +100M 表示大于 100MB,-mtime -7 表示近 7 天内修改,两者空格连接表示“且”,配合引号、权限处理和路径限制可高效定位目标文件。

按文件体积大小和修改时间精准搜索,是 find 最实用的组合场景之一——比如清理近期生成的大日志、定位几天内异常膨胀的配置文件,或排查磁盘空间占用源头。关键不在单个参数,而在两个条件的逻辑衔接与单位细节。
按大小筛选:单位和符号要写对
文件大小用 -size 参数,但单位字母和正负号含义容易出错:
-
+100M表示“大于 100MB”,-50k表示“小于 50KB”,1G表示“恰好 1GB”(不加符号) - 常用单位:
c(字节)、k(KB)、M(MB)、G(GB);b是 512 字节块,一般不用 - 例如:
find /var/log -size +50M找出所有大于 50MB 的日志文件
按修改时间筛选:-mtime 是“天”,不是“日历日”
-mtime 基于 24 小时周期计算,不是按日期翻页:
-
-mtime -7:过去 7 天内(含今天)内容被修改过的文件 -
-mtime +30:30 天前修改的文件(即修改时间早于 30×24 小时前) -
-mtime 0:今天修改的文件(从 00:00 开始算起) - 若需分钟级精度,用
-mmin,如-mmin -10查 10 分钟内改过的文件
大小 + 时间联合搜索:用空格表示“且”关系
多个条件默认是逻辑“与”,直接并列即可,无需 -a:
-
find /tmp -type f -size +10M -mtime -3:找 /tmp 下近 3 天内修改、且大于 10MB 的普通文件 -
find ~/Documents -name "*.pdf" -size -2M -mtime +90:找 Documents 里超过 90 天未动、又小于 2MB 的 PDF - 注意顺序不影响结果,但建议先写
-type或-name缩小范围,再加-size和-mtime提升效率
避免常见坑:通配符、权限与路径起点
实际执行时几个细节决定成败:
- 路径别漏写:不指定路径默认查当前目录(
.),想搜全盘得用/,但建议加sudo并避开/proc/sys等虚拟文件系统 - 通配符要引起来:
-name "*.log"必须加双引号,否则 shell 可能提前展开导致匹配失败 - 权限不足会报错(如
Permission denied),可加2>/dev/null屏蔽错误输出,不影响结果 - 大范围搜索前,可用
-maxdepth 2限制层级,避免陷入深层临时目录拖慢速度

















