news 2026/5/30 17:27:34

深入理解Linux du命令:解决隐藏文件导致的统计差异

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解Linux du命令:解决隐藏文件导致的统计差异

在使用Linux系统进行磁盘空间管理时,du命令是我们最常用的工具之一。但你是否遇到过这样的情况:使用du -sh /root命令显示某个目录占用了100G空间,而使用du -sh /root/*检查同一目录下的所有内容却只得到50G的结果?这种差异往往让人困惑。本文将深入解析这一现象的原因,并全面介绍du命令的使用技巧。

1.du命令基础

du(Disk Usage)命令是Linux系统中用于查看文件和目录磁盘使用情况的强大工具。它的基本语法非常简单:

du [选项] [文件或目录]

常用的选项包括:

  • -s或--summarize:只显示总计大小,不列出具体内容;
  • -h或--human-readable:以人类可读的格式(KB、MB、GB)显示大小;
  • -a或--all:显示目录中所有文件的磁盘使用量,而不仅仅是目录;
  • --max-depth=N:控制目录遍历的深度;
  • --exclude=PATTERN:排除符合特定模式的文件或目录。

2.基本使用示例

查看当前目录的总磁盘使用量:

du -sh

查看指定目录的磁盘使用量:

du -sh /path/to/directory

查看目录下各子项的大小(只显示一层):

du -h --max-depth=1 /path/to/directory

3.统计差异的谜团:为什么du -sh /root与du -sh /root/*结果不同?

回到开头提到的问题,为什么du -sh /root和du -sh /root/*会有如此大的差异呢?

3.1 理解命令的差异

  • du -sh /root:这个命令统计/root目录及其所有内容的磁盘使用情况,包括隐藏文件和目录。在Linux中,隐藏文件是以点(.)开头的文件/目录名,如.bashrc、.ssh/等。
  • du -sh /root/*:这个命令首先由shell展开*通配符,然后对/root目录下每个非隐藏的文件和子目录分别执行du命令。关键是,shell的通配符*通常不匹配以点开头的隐藏文件。

3.2 实际示例说明

假设/root目录包含以下内容:

file1.txt (10G) downloads/ (30G) .bashrc (1MB) .cache/ (20G)
  • du -sh /root会统计所有内容:10G + 30G + 0.001M + 20G ≈ 60G
  • du -sh /root/*只统计非隐藏内容:10G + 30G ≈ 40G

这个简单的例子清晰地展示了差异的来源——隐藏文件没有被*通配符捕获

3.3 查看隐藏文件的正确方法

既然知道了问题所在,我们来看看如何正确统计包含隐藏文件的目录大小。

方法一:直接检查目录

最简单的方法就是直接对目录使用du命令,而不是使用通配符:

du -sh /root

方法二:显式包含隐藏文件

如果您确实需要分别查看每个条目(包括隐藏文件),可以使用:

du -sh .[!.]* * 2>/dev/null | sort -hr

同时显示隐藏和非隐藏项目的大小并排序。其中 2>/dev/null是为了忽略可能出现的无权限访问某些目录的错误提示。

4.du与df的差异

值得注意的是,du和df是两个不同的工具,它们可能会显示不同的结果:

  • du统计文件大小,关注文件内容;
  • df统计磁盘使用情况,关注文件系统层面。

当已删除的文件仍被进程占用时,df可能显示空间已使用而du无法统计到这些文件,导致结果不一致。

5.总结

通过本文的介绍,您现在应该明白了为什么du -sh /root和du -sh /root/*会产生不同的结果。关键在于隐藏文件的处理方式不同。要准确统计目录大小,最好直接对目录使用du命令,而不是依赖shell的通配符展开。 掌握du命令的各种用法,可以帮助您更有效地管理Linux系统的磁盘空间,及时发现存储问题并采取相应措施。无论您是系统管理员还是普通用户,这都是一个值得深入学习和掌握的重要工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 0:47:30

高效音频转文字工具:pyTranscriber深度应用指南

在数字内容创作日益普及的今天,音频转文字工具已成为提升工作效率的重要助手。pyTranscriber作为一款开源的音频转录解决方案,凭借其双引擎支持和多语言界面,为用户提供了专业级的语音识别体验。 【免费下载链接】pyTranscriber 项目地址:…

作者头像 李华
网站建设 2026/5/28 21:42:31

揭秘Open-AutoGLM底层架构:如何实现零代码AI模型自动优化

第一章:揭秘Open-AutoGLM底层架构:如何实现零代码AI模型自动优化 Open-AutoGLM 是一个面向自然语言任务的自动化机器学习框架,专为非专业开发者设计,能够在无需编写代码的前提下完成 AI 模型的训练、调优与部署。其核心在于将复杂…

作者头像 李华
网站建设 2026/5/28 18:30:48

PC端微信小程序源码提取完整指南

PC端微信小程序源码提取完整指南 【免费下载链接】pc_wxapkg_decrypt_python PC微信小程序 wxapkg 解密 项目地址: https://gitcode.com/gh_mirrors/pc/pc_wxapkg_decrypt_python 想要深入了解微信小程序的技术实现吗?掌握PC端wxapkg文件的解析方法&#xff…

作者头像 李华
网站建设 2026/5/30 20:24:42

【AI工具选型必看】:为什么这4类技术团队绝不容错过Open-AutoGLM?

第一章:Open-AutoGLM核心价值全景透视Open-AutoGLM 作为新一代开源自动化通用语言模型框架,致力于在多场景、多模态任务中实现“零人工干预”的智能决策闭环。其核心价值不仅体现在高性能的语言理解与生成能力上,更在于系统级的自动化推理架构…

作者头像 李华
网站建设 2026/5/30 13:31:02

(Open-AutoGLM移动端部署避坑指南):90%开发者忽略的4个性能陷阱

第一章:Open-AutoGLM移动端部署概述Open-AutoGLM 是基于 AutoGLM 架构优化的轻量化大语言模型,专为移动设备端侧推理设计。其核心目标是在资源受限的移动环境中实现高效、低延迟的语言理解与生成能力。通过模型剪枝、量化压缩与硬件加速技术的深度融合&a…

作者头像 李华
网站建设 2026/5/30 18:41:11

STM32CubeMX安装兼容性设置快速理解

STM32CubeMX 安装踩坑实录:从 Java 环境到系统权限,一文打通兼容性任督二脉 你有没有遇到过这样的场景? 兴冲冲下载完 STM32CubeMX,双击安装包却毫无反应;好不容易装上了,启动时直接闪退;或者…

作者头像 李华