du -sh是唯一能准确反映文件夹真实磁盘占用的命令,因其遍历文件系统块并累加实际占用;ls -lh仅显示目录inode元数据(如4096字节),不递归统计内容,故无法代表目录真实空间消耗。

如何在Linux中快速统计文件夹的大小

du -sh 是唯一能快速、准确反映文件夹真实磁盘占用的命令,其他方式(如 ls -lhstat)只显示单个文件元数据或逻辑大小,对目录本身无意义。

为什么不能用 ls -lh 看文件夹大小

你知道吗?ls -lh 这个命令对目录显示的只是一个固定值(通常是4096字节),这其实是inode占用的空间,而并非目录内所有内容的总和。而且啊,它根本不会去递归统计子项。所以呢,当你执行 ls -lh /var/log 时,看到输出的“4.0K”,这和实际可能有几百MB的日志文件完全没有关系哦。

常见误操作:ls -lh */ 看子目录——这会漏掉隐藏目录(如 .git)、权限不足跳过的路径,且不包含目录自身结构开销(如 ext4 的目录索引块)。

du -sh 的正确用法和易错点

-s(summary)和 -h(human-readable)必须同时用;单独 du -s 输出的是 512 字节块数(比如 12345),人眼无法判断是 6MB 还是 6GB。

大目录下快速定位“谁最占空间”

du -sh /var 显示 12G,但不知道哪块拖累时,用 --max-depth=1 一层展开,再配合 sort -hr 排序:

du -sh --max-depth=1 /var/* 2>/dev/null | sort -hr

关键细节:

为什么 dfdu 结果经常不一致

这不是命令错了,而是统计对象不同:df 看文件系统已分配的数据块,du 看路径下可见文件的块总和。

真正的难点并非在于如何敲击命令,而是当看到一个“20G”的目录时,需要瞬间做出判断:它是日志轮转后残留的?是journalctl未清理导致的?还是某个服务将临时文件写入了不该写入的地方——du会给你呈现数字,但这些数字背后所隐藏的故事,却需要依靠丰富的经验来进行补全。

本文转载于:https://www.php.cn/faq/3014381.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。