要定位产生大量小文件的目录,需先按子目录统计小于100KB的普通文件数量并降序排列,再结合日志、临时目录等高危路径及时间集中性、命名规律深入排查,同时用-xdev和-prune排除系统目录干扰。

要找出哪个目录产生了大量小文件,核心思路是:先按目录统计文件数量,再结合文件大小筛选“小文件”,最后排序定位高产目录。
按子目录统计小文件数量
小文件通常指小于 1MB(或更小,如 100KB)的常规文件。不能只用 du 看磁盘占用——小文件多但总空间小,容易被忽略;必须用 find + while 按目录逐个计数。
- 统计当前目录下所有一级子目录中「小于 100KB 的普通文件」个数:
find . -maxdepth 1 -type d ! -path "." | while read dir; do
count=$(find "$dir" -maxdepth 1 -type f -size -100k 2>/dev/null | wc -l)
[ "$count" -gt 0 ] && echo "$count $dir"
done | sort -nr
- "$dir" 加双引号防路径含空格中断
- -size -100k 表示小于 100KB(注意单位是小写 k)
- 2>/dev/null 屏蔽无权限目录的报错,避免干扰输出
- sort -nr 按数量降序排列,顶部即最“高产”目录
深入排查:找频繁创建小文件的可疑目录
有些目录天生易积攒小文件,比如日志缓存、临时上传、构建产物等。可针对性检查:
- /var/log/:看是否有未轮转的 service.log.*、journal 日志碎片
- /tmp 和 /var/tmp:检查残留的临时解压包、session 文件、.part 下载片段
- 应用工作目录:如 ~/Downloads、~/Library/Caches(macOS 类比)、~/.cache(Linux)
- 容器或 VM 目录:如 ~/VirtualBox VMs/*/Snapshots/ 中的差分磁盘元数据
快速验证某目录:find /var/log -type f -size -10k | head -5 看是否真为预期的小日志片段。
辅助判断:结合时间与命名规律
大量小文件常有共性特征——时间集中、命名相似。可用以下命令辅助识别:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 查最近 1 小时内新建的小文件,并按目录分组计数:
find . -type f -size -100k -mmin -60 -printf '%h\0' | sort -z | uniq -zc | sort -znr | tr '\0' '\n'
- -printf '%h\0' 输出文件所在目录路径,用 \0 分隔防换行干扰
- uniq -zc 统计每目录出现次数(\0 分隔下有效)
- 结果里数字大且路径明确(如 ./app/logs/2026-10-09),基本就是源头
排除干扰:跳过系统和挂载点
全盘扫描时,避免进入 /proc、/sys、/dev 或其他挂载分区(如 /mnt/backup),否则可能卡住或返回无效结果:
- 加 -xdev 限制在当前文件系统内
- 用 -prune 跳过指定路径:
find . \( -path "./proc" -o -path "./sys" -o -path "./dev" \) -prune -o -type d ! -path "." -print0 | while read -d '' dir; do ...
不复杂但容易忽略。










