跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Linux下如何计算文件夹的总大小 du -sh用法

du -sh统计的是当前用户有读取权限的磁盘占用,不包含隐藏文件(除非显式指定)、不跟随符号链接、跳过无权访问目录,故结果可能偏小;du -sh .统计当前目录总大小(含隐藏项),du -sh *仅统计非隐藏子项。
du -sh
是最常用也最容易出错的目录大小统计方式。它不显示子目录明细,只输出一个汇总值,但这个“汇总”是否包含隐藏文件、是否递归进符号链接、是否受权限限制——全看你怎么用。 为什么
du -sh
有时不准 根本原因在于
du
统计的是磁盘占用(disk usage),不是文件逻辑大小;它只计算当前用户有读取权限的文件,跳过无权访问的子目录,也不会展开无法解析的符号链接。 遇到权限不足的子目录(比如
/root/.cache
),
du
直接跳过,结果偏小 符号链接默认不跟随,若目标在别处,其大小不计入 硬链接被重复计数(
-l
可避免),而软链接本身只算几个字节 稀疏文件、已删除但未释放的文件句柄,
du
不感知
du -sh
du -sh *
的区别必须分清 前者统计当前目录总大小(含隐藏项);后者只统计当前目录下**非隐藏**的子项(
*
不匹配
.bashrc
这类点开头的文件/目录),漏掉
.git
.config
等常见大目录。 Docker Desktop(linux) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载
du -sh
→ 输出一行,如
2.4G .
du -sh *
→ 列出每个非隐藏子项,但不含
.
自身,也不含
.env
.DS_Store
等 要真正“看到所有”,得用
du -sh .[!.]* *
或更稳妥的
du -sh --max-depth=1
快速查大目录:加
--max-depth=1
再配合
sort
单纯
du -sh
只给总数,没法定位哪个子目录吃空间。实际排障时,90% 的需求是“哪个文件夹最占地方”。
du -sh --max-depth=1 | sort -hr
—— 按人眼可读格式倒序排列,第一行就是最大项
du -sh --max-depth=1 | sort -hr | head -n 10
—— 只看前 10 大 注意:
--max-depth=1
包含隐藏目录(
.git
.local
都会列出来),比
*
更完整 如果想排除某些路径,用
--exclude='.cache'
,但注意它不支持通配符,得写全名 真正容易被忽略的点是:你执行
du -sh
的位置,决定了统计起点;而是否加
sudo
,决定了能否看到全部内容。没权限时,它不会报错,只会静默跳过——你以为 5GB 的目录,可能只是你当前能看见的部分。

相关文章