linux磁盘空间排查需快速定位前10大文件或目录:一、du+sort组合(如du -ah / 2>/dev/null | sort -rh | head -n 10);二、find+ls(如find /home -type f -exec ls -lh {} \; 2>/dev/null | sort -rh -k5 | head -n 10);三、ncdu交互式分析;四、find+du精准筛选大文件;五、awk增强数值筛选能力。

如果您发现Linux系统响应变慢或服务异常,很可能是磁盘空间已接近耗尽。快速定位占用空间最大的前10个文件或目录是排查问题的关键起点。以下是多种高效、可直接执行的命令方法:
一、使用du与sort组合查找最大文件
该方法通过递归统计所有文件大小,再以人类可读格式排序并截取前10项,结果准确且兼容性高,适用于绝大多数Linux发行版。
1、在根目录下查找占用空间最大的前10个文件(跳过权限错误):
du -ah / 2>/dev/null | sort -rh | head -n 10
2、仅限当前目录层级,避免深度遍历影响性能:
du -ah . 2>/dev/null | sort -rh | head -n 10
3、排除符号链接和特殊文件系统挂载点,提升结果可靠性:
du -ahx . 2>/dev/null | sort -rh | head -n 10
二、使用find配合ls按大小排序
此方法直接调用ls -lSh获取文件详细信息并按第五列(大小)逆序排列,不依赖du统计,对硬链接和稀疏文件处理更直观,适合精确定位单个大文件。
1、查找/home目录下最大的10个普通文件:
find /home -type f -exec ls -lh {} \; 2>/dev/null | sort -rh -k5 | head -n 10
2、限定文件大小范围(如100MB至2GB之间):
find /var -type f -size +100M -size -2G -exec ls -lh {} \; 2>/dev/null | sort -rh -k5 | head -n 10
3、排除特定路径(如/proc、/sys等虚拟文件系统)以避免报错:
find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -type f -exec ls -lh {} \; 2>/dev/null | sort -rh -k5 | head -n 10
三、使用ncdu交互式分析磁盘占用
ncdu提供基于终端的图形化界面,支持键盘导航、实时刷新与目录钻取,特别适合人工核查复杂目录结构,且能自动忽略不可读路径,降低操作风险。
1、安装ncdu(Ubuntu/Debian):
sudo apt-get install ncdu
2、安装ncdu(CentOS/RHEL):
sudo yum install ncdu
3、启动交互式扫描(推荐从根目录开始,添加--exclude过滤临时路径):
ncdu --exclude /proc --exclude /sys --exclude /dev /
四、使用find与du结合精准定位大文件
该方法利用find筛选文件类型后交由du精确计算大小,再排序输出,避免了du -ah对目录整体计数带来的干扰,结果中每个条目均为独立文件,便于后续清理决策。
1、查找整个系统中大于500MB的普通文件,并显示其大小与路径:
find / -type f -size +500M -print0 | xargs -0 du -h | sort -rh | head -n 10
2、限制搜索范围为/var/log和/tmp,兼顾效率与针对性:
find /var/log /tmp -type f -size +100M -print0 | xargs -0 du -h | sort -rh | head -n 10
3、跳过所有用户主目录,聚焦系统级大文件:
find / -path /home -prune -o -type f -size +200M -print0 | xargs -0 du -h | sort -rh | head -n 10
五、使用awk增强筛选能力
当需按具体字节数阈值(而非模糊单位)精确匹配时,awk可解析du原始输出进行数值比对,避免-h参数导致的单位换算误差,确保结果严格符合设定条件。
1、列出所有大于1,048,576 KB(即1GB)的文件路径:
du -k / 2>/dev/null | awk '$1 > 1048576 {print $1 " KB\t" $2}' | sort -nr | head -n 10
2、只显示大小在50MB至200MB之间的文件(单位统一为KB):
du -k /var 2>/dev/null | awk '$1 > 51200 && $1
3、排除总大小为0的条目,规避设备文件或空链接干扰:
du -k . 2>/dev/null | awk '$1 > 0 {print $0}' | sort -nr | head -n 10










