Linux运维中用find查文件核心是锁路径、定条件、防出错:需加-type f防混入目录,引号防shell提前展开,单位符号(+/-)须正确;-name区分大小写,-iname忽略;-size单位为k/M/G/c,+为大于、-为小于;-mtime按天、-mmin按分钟;多条件默认逻辑与。

Linux 运维中用 find 查文件,核心就三件事:锁路径、定条件、防出错。不加 -type f 容易混进目录;不加引号会让 shell 提前展开通配符;单位和符号写错(比如把 +100M 写成 100M)就找不到目标。
按文件名查找:区分大小写和引号是关键
文件名搜索必须用 -name(区分大小写)或 -iname(忽略大小写),且模式一定要用单引号或双引号包住,否则 shell 会先在当前目录展开 *,导致 find 收到的是实际文件名,不是通配表达式。
- 查当前目录下所有以
.log结尾的普通文件:find . -type f -name "*.log" - 查
/etc下名字含nginx的配置文件,不区分大小写:find /etc -type f -iname "*nginx*" - 只查当前层(不进子目录):
find /var/log -maxdepth 1 -type f -name "*.log" - 要排除某个子目录(如跳过
/var/log/journal):find /var/log -path "/var/log/journal" -prune -o -type f -name "*.log" -print
按大小查找:注意单位和符号含义
-size 后面的单位有 k(KiB)、M(MiB)、G(GiB)、c(字节)。符号 + 表示“大于”,- 表示“小于”,不加符号表示“等于”。例如 +100M 是大于 100 MiB,-50k 是小于 50 KiB。
- 找大于 100MB 的日志文件:
find /var/log -type f -size +100M - 找小于 1KB 的空配置文件:
find /etc -type f -size -1k - 找大小正好是 4KB 的文件:
find /tmp -type f -size 4k - 找 1MB 到 10MB 之间的文件:
find /home -type f -size +1M -size -10M
按修改时间查找:-mtime 和 -mmin 别混用
-mtime 按 24 小时整数天计算,从 00:00 开始算;-mmin 是分钟级精度,适合查最近几小时内的变更。比如 -mtime -1 只匹配今天 00:00 之后改过的文件,而 -mmin -60 才是最近 1 小时内改过的。
- 查最近 7 天内修改过的配置文件:
find /etc -type f -mtime -7 - 查 30 分钟内修改过的日志:
find /var/log -type f -mmin -30 - 查 5 天前(不含今天)修改的文件:
find /backup -type f -mtime +5 - 查恰好是 3 天前(即第 3~4 天之间)修改的:
find /data -type f -mtime 3
组合多个条件:and 关系默认成立
多个条件并列,默认是逻辑“与”。比如同时按名称、大小、时间筛选,直接连写即可,不需要额外加 -a。
- 找 /var/log 下近 24 小时内修改、大于 5MB、后缀为 .gz 的压缩日志:
find /var/log -type f -name "*.gz" -size +5M -mmin -1440 - 找家目录里名字含
report、小于 100KB、且是上周改过的 PDF:find ~ -type f -iname "*report*.pdf" -size -100k -mtime -7 -mtime +1


















