














在使用Linux系统进行磁盘空间管理时,du命令是我们最常用的工具之一。但你是否遇到过这样的情况:使用du -sh /root命令显示某个目录占用了100G空间,而使用du -sh /root/*检查同一目录下的所有内容却只得到50G的结果?这种差异往往让人困惑。本文将深入解析这一现象的原因,并全面介绍du命令的使用技巧。
du(Disk Usage)命令是Linux系统中用于查看文件和目录磁盘使用情况的强大工具。它的基本语法非常简单:
常用的选项包括:
查看当前目录的总磁盘使用量:
查看指定目录的磁盘使用量:
du -sh /path/to/directory
查看目录下各子项的大小(只显示一层):
du -h --max-depth=1 /path/to/directory
回到开头提到的问题,为什么du -sh /root和du -sh /root/*会有如此大的差异呢?
假设/root目录包含以下内容:
file1.txt (10G) downloads/ (30G) .bashrc (1MB) .cache/ (20G)
这个简单的例子清晰地展示了差异的来源——隐藏文件没有被*通配符捕获。
既然知道了问题所在,我们来看看如何正确统计包含隐藏文件的目录大小。
方法一:直接检查目录
最简单的方法就是直接对目录使用du命令,而不是使用通配符:
如果您确实需要分别查看每个条目(包括隐藏文件),可以使用:
du -sh .[!.]* * 2>/dev/null | sort -hr
同时显示隐藏和非隐藏项目的大小并排序。其中 2>/dev/null是为了忽略可能出现的无权限访问某些目录的错误提示。
值得注意的是,du和df是两个不同的工具,它们可能会显示不同的结果:
当已删除的文件仍被进程占用时,df可能显示空间已使用而du无法统计到这些文件,导致结果不一致。
通过本文的介绍,您现在应该明白了为什么du -sh /root和du -sh /root/*会产生不同的结果。关键在于隐藏文件的处理方式不同。要准确统计目录大小,最好直接对目录使用du命令,而不是依赖shell的通配符展开。 掌握du命令的各种用法,可以帮助您更有效地管理Linux系统的磁盘空间,及时发现存储问题并采取相应措施。无论您是系统管理员还是普通用户,这都是一个值得深入学习和掌握的重要工具。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。