当前位置: 首页 > news >正文

Ubuntu磁盘空间分析:du命令及常用组合

1、du命令的作用

du(Disk Usage)是 Ubuntu 系统中用于查看目录或文件磁盘使用情况的命令,主要用于分析磁盘空间占用


2、语法

du [选项] [目录/文件路径]

常用选项

2.1、-h

以 KB、MB、GB 等人性化可读格式(Human-readable)的单位显示大小(默认以块为单位)。

du -h /home  

注意:由于-h会递归展开所有的子目录,所以不适合直接用于目录下有大量子文件的场景,通常结合下面的-s选项一起使用。


2.2、-s

s代表Summarize,只输出目标目录/文件的总大小,不展开子目录细节。

du -sh /var/log 

2.3、-d <深度>--max-depth=<深度>

控制递归查看子目录的层级(-d 0 等价于 -s)。

du -h -d 1 /home  # 仅扫描 /home 下一级子目录

输出示例:
在这里插入图片描述


2.4、--exclude=<模式>

跳过符合通配符模式的文件或目录(如排除日志文件)。

du -h --exclude="*.log" /var  # 扫描 /var 目录,但排除所有 .log 文件

2.5、直接查看文件大小

若目标是文件而非目录,du 会显示该文件的磁盘占用(注意与 ls -l 显示的“实际大小”可能不同,因为磁盘按块分配)。

du -h /etc/hosts  # 显示 hosts 文件的磁盘占用

输出示例:

4.0K    /etc/hosts  # 即使文件实际大小只有 100字节,也会占 1 个块(通常 4KB)

3、磁盘分析的常见组合

3.1、按大小排序当前目录的一级子目录

想快速定位当前目录下“最占空间”的子目录时,可结合 sort 命令按大小排序。

du -h -d 1 . | sort -hr
  • -h:人性化单位(如MB、GB)。
  • -d 1:仅扫描一级子目录。
  • sort -hr-r 是 --reverse 的缩写,表示逆序排序(从大到小);-hsort 正确解析 K/M/G 单位

3.2、查找大目录下的“深层大文件”

当某个大目录(如 /data)整体占用高,但不清楚具体是哪个子目录或文件导致时,可通过限制扫描深度 + 过滤大文件快速定位。

du -h /data --max-depth=3 | grep '[0-9]G'
  • --max-depth=3:扫描 /data 下最多3层子目录(避免递归过深)。
  • grep '[0-9]G':过滤出大小为 GB 级别的目录或文件(如 2G、5G)。

3.3、统计指定类型文件的总大小

需要快速知道某个目录下所有 PDF、图片等特定类型文件的总占用时,可结合 find 命令。

find /home/user -name "*.pdf" -exec du -ch {} + | grep total
  • find /home/user -name "*.pdf":查找 /home/user 下所有 .pdf 文件。
  • -exec du -ch {} +:对每个找到的文件执行 du -ch-c 汇总,-h 易读)。
  • grep total:仅显示所有文件的总大小。

3.4、对比两个目录的大小差异

需要快速比较两个目录(如原始目录和备份目录)的空间占用时,直接用 du 输出两者的总大小。

du -sh /path/to/source /path/to/backup
  • -s:仅显示总大小;
  • -h:易读格式。

3.5、忽略隐藏目录/文件的统计(如 .git、.cache)

开发或运维中,常需要排除隐藏目录(如 Git 仓库的 .git 目录)的干扰,专注业务文件的占用分析。

du -h -d 2 --exclude=".*" /project
  • --exclude=".*":排除所有以 . 开头的隐藏目录或文件(如 .git.bashrc)。
  • -d 2:扫描 /project 下两级子目录(避免遗漏关键子目录)。

3.6、实时监控目录大小变化(配合 watch 命令)

需要观察某个目录(如下载目录)在文件传输/下载时的实时大小变化,可结合 watch 命令定时刷新。

watch -n 5 "du -sh /downloads"
  • -n 5:每5秒刷新一次(可根据需求调整,如 -n 1 每秒刷新)。

相关文章:

  • [思维模式-37]:什么是事?什么是物?什么事物?如何通过数学的方法阐述事物?
  • 360智语:以全栈技术重塑企业级智能体开发新标杆
  • 【行为型之观察者模式】游戏开发实战——Unity事件驱动架构的核心实现策略
  • 基于 art 下的类加载机制,实现函数抽取壳
  • 嵌入式C语言中指针的不同类型及其特点分析
  • idea springboot 配置文件 中文显示
  • 高速系统设计实例设计分析二
  • CSS:选择器的优先级
  • 【Dify系列教程重置精品版】第九章:在Dify对话中显示本地图片(下)
  • AGI大模型(16):向量检索之基于向量检索的RAG实现
  • 数据结构第七章(二)-树形查找:二叉排序树与平衡二叉树
  • 【LeetCode 热题 100】全排列 / 子集 / 组合总和 / 分割回文串 / N 皇后
  • 论文阅读笔记——双流网络
  • 利用vba替换word中多个表格,相邻单元格的文字
  • 【Lua】Redis 自增并设置有效期
  • spring-cloud-stream学习
  • Halcon案例(二):C#联合Halcon回形针以及方向
  • 【idea】调试篇 idea调试技巧合集
  • 第五部分:第二节 - Node.js 核心模块:厨房里的基本工具
  • 显示的图标跟UI界面对应不上。
  • 泽连斯基:正在等待俄方确认参加会谈的代表团组成
  • 著名植物学家、园艺学家,国际植物园协会原主席贺善安逝世
  • 河南省委常委会会议:坚持以案为鉴,深刻汲取教训
  • 中欧金融工作组第二次会议在比利时布鲁塞尔举行
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿