可使用du命令精确统计linux文件或目录磁盘占用:支持-h(人类可读)、-s(汇总)、--exclude(排除)、--max-depth(限制深度)、watch(实时监控)等参数实现多样化空间分析需求。

如果您需要了解Linux系统中某个文件或目录所占用的磁盘空间,可以使用du(disk usage)命令进行精确统计。以下是执行该任务的具体操作步骤:
一、查看单个文件的大小
du命令默认以块(通常为1024字节)为单位显示文件大小,配合-h参数可输出人类可读格式(如KB、MB、GB),便于直观判断文件体积。
1、在终端中输入:du -h filename,其中filename替换为实际文件路径。
2、若需仅显示总大小而不列出子项,添加-s参数:du -sh filename。
3、如文件权限受限,可加sudo前缀执行:sudo du -sh filename。
二、统计目录总占用空间
du对目录默认递归计算所有子目录及文件的磁盘用量,-s参数用于抑制逐级展开,仅返回顶层目录汇总值,避免冗长输出。
1、进入目标目录所在路径后,执行:du -sh /path/to/directory。
2、若当前已在目标目录内,可使用点号代替路径:du -sh .。
3、要排除特定子目录(如node_modules),可结合--exclude参数:du -sh --exclude="node_modules" .。
三、按大小排序显示子目录占用
通过du列出各子目录用量并配合sort命令,可快速识别占用空间最大的目录,有助于定位存储瓶颈。
1、执行命令:du -sh */ | sort -hr,其中*/匹配当前目录下所有子目录。
2、若需包含隐藏目录(以.开头),改用:du -sh .*/ */ | sort -hr | head -n 20,限制输出前20行。
3、为提高可读性,可添加--max-depth=1限制只统计一级子目录:du -sh --max-depth=1 /path/to/dir | sort -hr。
四、显示指定深度的目录结构与大小
--max-depth参数控制du递归遍历的层级深度,适用于需分层分析目录空间分布的场景,避免全量扫描带来的性能开销。
1、仅显示目标目录及其直接子目录大小:du -sh --max-depth=1 /path/to/dir。
2、显示两层深度(目录、子目录、子子目录):du -sh --max-depth=2 /path/to/dir。
3、若需排除符号链接指向的内容,添加-L参数:du -shL --max-depth=1 /path/to/dir。
五、实时监控目录空间变化
结合watch命令可周期性刷新du结果,适用于观察文件写入、日志增长或清理操作的效果。
1、每2秒刷新一次当前目录总大小:watch -n 2 'du -sh .'。
2、高亮显示变化部分,增强可读性:watch -n 5 'du -sh --max-depth=1 . | sort -hr'。
3、退出监控按Ctrl+C组合键。










