Linux 怎么找到占用空间最大的文件?

磁盘快满了,想找出哪些文件/目录占用了最多空间

解决方案

逐层排查大目录 推荐

# 第一步:看哪个分区满了
df -h

# 第二步:找根目录下最大的目录
du -sh /* 2>/dev/null | sort -rh | head -10

# 第三步:进入大目录继续排查
du -sh /var/* 2>/dev/null | sort -rh | head-10

从根目录开始,逐层深入找到占用空间最大的目录。sort -rh 按大小倒序排列。

适用场景:不确定哪里占用了空间,需要逐步排查

直接找大文件 推荐

# 找大于 100MB 的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh

# 更简洁的方式
find / -type f -size +100M -printf '%s %p\n' 2>/dev/null | sort -rn | head -20

find -size +100M 找大于 100MB 的文件。2>/dev/null 隐藏权限错误。

适用场景:想直接定位大文件

用 ncdu 交互式查看(推荐安装)

# 安装
sudo apt install ncdu  # Debian/Ubuntu
sudo yum install ncdu  # CentOS/RHEL

# 使用
ncdu /

ncdu 是交互式的磁盘分析工具,可以上下浏览目录,按大小排序,非常直观。

适用场景:经常需要分析磁盘空间

清理常见大文件

# 清理日志
sudo journalctl --vacuum-size=500M

# 清理 apt 缓存
sudo apt clean

# 清理 Docker
docker system prune -a

# 查找旧的大日志
find /var/log -name "*.gz" -delete

常见的空间占用来源:系统日志、包管理缓存、Docker 镜像、旧内核。

适用场景:快速释放空间

注意事项

不要随意删除 /var/log 下的活跃日志文件
删除前确认文件不是系统关键文件
Docker 的 /var/lib/docker 可能占用大量空间

相关命令