<p>find 命令可直接用 -size 和 -mtime(或 -mmin 等)组合实现体积与时间的双重筛选,条件间默认为“与”关系;单位用 c/k/M/G,符号 + 表示大于、- 表示小于;需根据需求选用合适时间参数,并建议添加 -maxdepth、-type f 等限制提升准确性和效率。</p>

直接用 find 组合 -size 和 -mtime(或其他时间参数)就能实现体积与时间的双重筛选,无需额外工具。关键在于理解单位含义、符号逻辑,以及条件之间的默认“与”关系。
按大小 + 修改时间联合过滤
find 默认将多个条件视为“且”关系,所以只要把 -size 和 -mtime 写在同一命令里,就自动满足“既大于某尺寸、又在某时间段内修改过”这类需求。
-
find /var/log -size +10M -mtime -7:查/var/log下所有「大于10MB」且「最近7天内修改过」的日志文件 -
find ~/Downloads -size -100k -mtime +30:找下载目录中「小于100KB」且「30天前修改」的小旧文件(比如残留的临时页、空配置) -
find /tmp -type f -size +500M -mmin -60:查/tmp中「大于500MB」且「过去60分钟内被修改」的大文件(常用于排查突发写入)
大小单位与符号要写对
单位错一个字母或符号,结果可能完全相反。常见写法:
-
单位:
c(字节)、k(KB)、M(MB)、G(GB)。例如+10M表示大于10兆字节 -
符号:
+是「大于」,-是「小于」,不加符号是「等于」。注意:-size 10M匹配「恰好10MB」(实际是10×1024×1024字节),极少刚好吻合,慎用 - 避免歧义:用
10485760c等价于10M,但可读性差;推荐统一用k/M
时间维度选对参数很关键
不是所有“时间”都一样,根据你要追踪的行为选:
-
-mtime n:按「天」算内容修改时间(适合日志、备份等常规场景) -
-mmin n:按「分钟」算,精度更高(调试、监控临时文件时更实用) -
-atime或-amin:查最近被读取过的文件(如排查程序是否加载了某个配置) -
-ctime:查权限、所有者、链接数等元数据变更时间(比如想确认谁改过文件权限)
加限制让搜索更稳更快
尤其在大目录下,多维搜索容易慢或误匹配,建议加上这些防护项:
-
-maxdepth 2:限定最多查两层子目录,避免遍历整个/home或/usr -
-type f:明确只查普通文件,排除目录、设备文件等干扰项 -
2>/dev/null:重定向权限错误(如无权读某子目录)到空设备,避免刷屏报错 - 通配符加引号:
-name "*.log"而不是-name *.log,防止 shell 提前展开
不复杂但容易忽略细节,组合得当就能一次命中目标文件。

















