🌻 查找大目录:du|find|ncdu
在 Linux 中查找大目录,最核心的工具是 du(Disk Usage),结合 sort 进行排序。针对日常巡检,这里为你整理了几种最实用的方法和命令,按场景分类。
📋 核心命令速查表
| 使用场景 | 推荐命令 | 说明 |
|---|---|---|
| 查看根目录下最大的子目录 | sudo du -sh /* 2>/dev/null \| sort -rh \| head -10 |
忽略权限报错,直观显示前10名大小。 |
| 查看当前目录下的一级子目录大小 | du -h --max-depth=1 \| sort -hr |
最常用的命令,快速定位“谁占用了当前空间”。 |
| 递归查看最深子目录的总大小 | du -ah /path \| sort -rh \| head -20 |
会列出目录下所有文件和子目录的大小(非常耗时)。 |
| 交互式可视化探索(推荐) | ncdu / |
需要安装(yum/apt install ncdu),方向键交互,极其好用。 |
| 查找超过指定大小的目录/文件 | find / -type d -exec du -sh {} + 2>/dev/null \| sort -rh |
灵活组合,但效率较低,谨慎使用。 |
-
实战详解
- 查看根目录下最大的子目录
sudo du -sh /* 2>/dev/null | sort -rh | head -10
1. 最常用:查看当前目录下各子目录大小(一层)
如果想快速知道当前目录下,哪个子文件夹最大,这是首选:
du -h --max-depth=1 | sort -hr #--max-depth=1 只深入一层;sort -hr 按人类可读单位排序如果要查特定目录(如
/var),可以改为:du -h --max-depth=1 /var | sort -hr2. 最佳实践:查看根目录下最大的前 N 个项目(巡检常用)
直接对根目录执行扫描时,务必跳过虚拟文件系统(如
/proc、/sys),否则会报错或卡死:# 使用 -x 参数限制在同一文件系统,或者用 --exclude 排除 sudo du -sh /* --exclude=/proc --exclude=/sys --exclude=/dev 2>/dev/null | sort -rh | head -10如果知道是某个挂载点(比如
/home)空间满了,直接查它:sudo du -h --max-depth=1 /home | sort -rh3. 交互式神器:ncdu(强烈推荐)
ncdu 是一个基于终端的磁盘分析工具,比纯命令行更直观。你可以用上下键浏览,按d 删除,按n排序。# 安装(如果没有的话) # Ubuntu/Debian: sudo apt install ncdu # CentOS/RHEL: sudo yum install ncdu # 扫描根目录(注意加 -x 只扫当前分区,避免扫描 /proc) sudo ncdu -x /扫描完成后,界面会列出所有目录,按大小排序,点击进入子目录继续下钻,非常适合定位“隐藏的大文件”。
4. 彻底排查:结合 find 查找超大文件
有时目录大是因为里面有几个巨大的文件。此时应直接查文件:
# 查找根目录下大于 500M 的文件,并排序显示 sudo find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null | awk '{print $5, $9}' | sort -hr或者更简洁的版本(列出前20大文件):
sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20
-
高级巡检技巧
- 快速统计总大小:查看整个目录占用空间时,不需要列出子项:
sudo du -sh /var/log- 按文件类型排查:有时候日志目录占用大,但全是小文件(inode占满)。先看目录数量:
# 统计 /var 下子目录的数量 sudo ls -lR /var | grep "^d" | wc -l- 检查挂载点是否独立:如果
/ 满了,但/data 是独立挂载的,查根目录时应使用-x参数,避免跨分区统计:
sudo du -shx /* 2>/dev/null | sort -rh | head -10 -
⚠️ 注意事项
- 务必使用
sudo:否则没有权限读取某些目录(如/root),可能导致统计遗漏。 - 不要在高峰期运行全盘扫描:
du会大量消耗磁盘 I/O,建议在业务低峰期执行。 - 善用
--exclude:扫描根目录时,务必排除/proc、/sys、/dev,避免死循环或大量报错。
一句话总结:日常巡检优先用
du -h --max-depth=1 /path | sort -hr 快速下钻,遇到复杂情况直接装ncdu交互式排查,效率最高。 - 务必使用
阅读:188
发布时间: