最可靠方式是用du统计真实磁盘用量再排序筛选:先df -h定位高占用分区,再du -h --max-depth=1 /path | sort -hr | head -10分层定位大户,接着find /path -type f -exec du -h {} + | sort -hr | head -10精准列出最大文件,或用ncdu交互式深度分析。

直接找“占空间最多”的文件,不能只靠 find -size,因为硬链接、稀疏文件、容器镜像内部结构等会导致实际磁盘占用和文件大小不一致。最可靠的方式是用 du 统计真实磁盘用量,再排序筛选。
先看哪块盘快满了
执行 df -h,重点关注 Use% 接近 90% 或更高的挂载点,比如 /、/var、/home。只有先锁定高占用分区,后续查找才有意义。
按目录层级快速定位“大户”
在目标挂载点下,用 du 分层统计,避免一次性扫全系统:
-
du -h --max-depth=1 /var | sort -hr | head -10—— 查出/var下前十大的子项(含目录和文件) -
du -h --max-depth=2 /var/log | sort -hr | head -15—— 进入疑似大户目录后,再往下一层看 - 加
-x参数(如du -hx --max-depth=1 /)可跳过其他挂载点,防止误入/proc、/sys或 Docker overlay2 等虚拟路径
精准列出前 N 个最大文件
确认大致范围后,用以下命令直出文件列表:
-
find /var/log -type f -exec du -h {} + | sort -hr | head -10—— 比ls -lh更准,du统计的是实际磁盘块占用 -
du -ah /var/log 2>/dev/null | sort -hr | head -10—— 简洁写法,-a强制显示所有文件(含普通文件),-h可读格式 - 如果想排除日志压缩包或临时文件,可加
-not -name "*.gz" -not -name "*~"等条件过滤
交互式深度分析推荐 ncdu
需要反复钻取、对比、删前确认时,ncdu 是效率最高的选择:
- 安装:
sudo apt install ncdu(Debian/Ubuntu)或sudo yum install ncdu(CentOS/RHEL) - 运行:
ncdu /var/log,进入后用方向键浏览,回车进子目录,d删除选中项,q退出 - 优势:实时刷新、颜色区分、支持键盘操作,比纯命令更直观,尤其适合复杂嵌套结构











