当前位置:首页 > 技术 > 正文内容

Linux `du` 命令:文件和目录空间使用分析

访客 技术 2026年9月9日 16

在Linux系统中,`du`(disk usage)命令是一个核心工具,专门用于评估文件和目录所占用的磁盘空间。与关注文件系统整体使用情况的`df`命令不同,`du`命令的侧重点在于深入分析特定文件、目录及其子目录的实际磁盘占用量,为用户提供精细的空间使用报告。

1. 命令格式

du [OPTION]... [FILE]...

此命令用于显示指定文件或目录的磁盘使用情况。如果未指定文件或目录,`du`默认显示当前目录的磁盘使用量。

2. 命令参数

`du`命令提供了丰富的选项,允许用户根据需要定制输出格式和内容:

  • -a 或 --all:不仅显示目录总大小,也列出目录中所有文件的独立大小。
  • -b 或 --bytes:以字节(byte)为单位显示磁盘占用量。
  • -c 或 --total:在列出各个文件或目录大小的同时,一并计算并显示所有指定项的总和。
  • -k 或 --kilobytes:以千字节(KB,1024字节)为单位展示结果。
  • -m 或 --megabytes:以兆字节(MB)为单位显示磁盘空间。
  • -s 或 --summarize:只显示每个参数的总计,不列出子目录或文件的详细信息。
  • -h 或 --human-readable:以人类可读的格式输出,例如使用 K、M、G 等单位。
  • -x 或 --one-file-system:跳过位于不同文件系统上的目录或文件,仅处理初始文件系统内的内容。
  • -L 或 --dereference:跟踪符号链接,显示其指向的源文件或目录的实际大小。
  • -S 或 --separate-dirs:在显示单个目录大小时,不包含其子目录的大小,仅计算该目录自身直接包含的文件和目录项。
  • --exclude=PATTERN:排除符合指定模式(PATTERN)的文件或目录。
  • --max-depth=N:限制报告的深度为N层,例如`--max-depth=1`只显示当前目录下的文件和一级子目录的总和。

3. 使用实例

以下示例将演示`du`命令的常见用法。我们假设有一个名为project_data的目录,其结构和文件大小如下:

project_data/
├── documents/
│   ├── annual_report.pdf  (80K)
│   └── meeting_notes.txt  (5K)
├── archives/
│   ├── backup_2023.tar.gz (500K)
│   └── logs_archive.zip   (120K)
├── temp_files/
│   └── scratch.tmp        (10K)
└── readme.md              (2K)

总大小:80+5+500+120+10+2 = 717 KB

实例1:显示当前目录下的磁盘使用情况

不带任何参数执行`du`命令,会列出当前目录下所有子目录及其内容的磁盘使用量,以及当前目录的总计。

$ cd project_data/
$ du
85      ./documents
620     ./archives
10      ./temp_files
717     .

实例2:显示特定文件或目录所占空间

查询单个文件或目录的磁盘占用量。

$ du readme.md
2       readme.md

$ du documents/
85      documents/

实例3:显示多个文件或目录的总空间

同时查询多个指定文件和目录的磁盘使用量。

$ du documents/ archives/
85      documents/
620     archives/

实例4:仅显示总和大小

使用-s(summarize)选项可以只显示指定目录或文件的总计大小,不列出详细内容。

$ du -s
717     .

$ du -s archives/
620     archives/

实例5:以人类可读的格式显示

-h(human-readable)选项能将输出转换为更易读的单位,如 K、M、G。

$ du -h archives/
500K    archives/backup_2023.tar.gz
120K    archives/logs_archive.zip
620K    archives/

实例6:显示所有文件和目录(包括子文件)

结合使用-a和-h选项,可以显示所有文件和目录的详细大小,并以人类可读的格式输出。

$ du -ah documents/
80K     documents/annual_report.pdf
5.0K    documents/meeting_notes.txt
85K     documents/

实例7:显示指定项的总和

使用-c(total)选项,可以在列出各个文件或目录大小后,在最后一行显示它们的总和。

$ du -c readme.md documents/annual_report.pdf
2       readme.md
80      documents/annual_report.pdf
82      total

实例8:按空间大小排序输出

通过管道将`du`的输出传递给`sort`命令,可以按磁盘使用量进行排序。

$ du | sort -nr | head -n 5
717     .
620     ./archives
120     ./archives/logs_archive.zip
85      ./documents
80      ./documents/annual_report.pdf

这里-n表示按数值排序,-r表示反向(降序)排序,head -n 5只显示前5行。

实例9:限制报告深度

使用--max-depth=N选项可以限制`du`命令递归的层级。例如,--max-depth=1只会显示当前目录下的文件和一级子目录的总大小。

$ du -h --max-depth=1
85K     ./documents
620K    ./archives
10K     ./temp_files
2.0K    ./readme.md
717K    .

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。