惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
Vercel News
Vercel News
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
C
Check Point Blog
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
博客园_首页
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
V
Visual Studio Blog
小众软件
小众软件

博客园 - 人艰不拆_zmc

15000mAh 到底是什么概念?一篇看懂电池容量 go2_ros2_sdk 到底是干什么的?从 Go2、官方 SDK、ROS2 一路讲到 SLAM 和 Nav2 买了宇树 Go2 以后怎么二次开发?写给第一次做机器狗项目的人 买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack 到 ROS2 的完整入门指南 NVIDIA Jetson 到底是什么?写给第一次接触机器人和边缘 AI 的人 ROS / ROS2 到底是什么?写给第一次接触机器人开发的人 大模型到底能同时多少人用?一篇看懂并发、排队与容量估算 大模型为什么有快有慢?一篇看懂响应速度背后的关键因素 技术小白也能看懂:大模型里的量化、蒸馏到底是什么意思? Codex 使用技巧:从“会聊天”到“真正能干活” 我终于搞懂了:Codex 对话中插件和 Skill 到底怎么用 我终于搞懂了 Agent Spec:它其实就是 Agent 的“标准设计图” 我终于搞懂了 Tool:原来不只是 Function Calling 里的函数 Skill 里的 Python 脚本,到底是不是 Tool? 我终于搞懂了 Codex 的 Plugin 和 Skill:顺便把 App、MCP 一次理清 我终于搞懂了 Codex 的“应用”:App 到底是什么,怎么添加和维护? 我终于搞懂了 Tool、Function Calling 和 MCP:大模型到底怎么知道该调哪个接口? 我终于搞懂了 MCP:从 HTTP API 到 ERP MCP Server 的完整入门 我终于搞懂了 Codex 的“记忆”是怎么回事 Codex 用久了越来越慢?我的上下文管理小技巧 我终于搞懂了 Codex 里的 Thread、Turn 和 Session 从 Qwen3.8-27B 到 FP8、NVFP4、MoE:一次搞懂几个常见大模型概念 FPS 是什么意思?简单理解 60 FPS、25 FPS 和视频帧率 DeepSeek Harness 明明像 AI Coding 工具,为什么又能用来构建各种 Agent? 使用 Codex 开发项目,怎么才能节约 Token? 模型里的 32K、128K、256K 是什么意思?简单聊聊上下文限制 Codex 一次对话到底会给模型发送什么?以 Spring Boot 项目为例讲清 Context、代码读取与 Token 消耗 AI Agent 中的 Rule 是什么?以 Codex 为例,小白也能看懂 我终于搞懂了 Harness:它不是论文,也不是标准,更不是 Codex 独有 小白也能看懂:RTSP 到底是什么?
深入理解Linux du命令:解决隐藏文件导致的统计差异
人艰不拆_zmc · 2025-12-25 · via 博客园 - 人艰不拆_zmc

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

1.du命令基础

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

常用的选项包括:

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

2.基本使用示例

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

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

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 .[!.]* * 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系统的磁盘空间,及时发现存储问题并采取相应措施。无论您是系统管理员还是普通用户,这都是一个值得深入学习和掌握的重要工具。