编辑
2025-04-23
Linux
00

目录

Linux du (Disk Usage) 命令详解
基本语法
常用选项
重点介绍:du -ahd 1 及其排序
1. 按大小排序(从大到小)
2. 按名称排序(字母顺序)
其他常用法示例
注意事项

Linux du (Disk Usage) 命令详解

du 命令是 Linux 系统中一个非常实用的工具,用于估算和显示文件或目录所占用的磁盘空间大小。它通过递归地遍历目录结构来统计空间使用情况。


基本语法

bash
du [选项] [文件或目录...]
  • 如果不指定 文件或目录,则默认统计当前所在目录。
  • 输出结果默认单位是 KB (Kilobytes),并且会递归显示所有子目录的大小。

常用选项

选项说明
-h易读格式 (Human-readable):以 KB, MB, GB 等更易于理解的单位显示大小。
-a显示所有 (All):不仅显示目录的总大小,也显示目录下每个文件的大小。
-s总计 (Summarize):只显示指定目录或文件的总大小,不显示其内部子目录或文件的详情。
-d N, --max-depth=N限制深度 (Max Depth):只统计到指定的目录层级深度 N。-d 0 等同于 -s-d 1 表示只看当前目录下一层。
-c总和 (Total):在列出所有项目的大小后,在最后一行额外显示一个所有项目的总和。
-k以 KB (1024 bytes) 为单位显示。
-m以 MB (1024*1024 bytes) 为单位显示。
--exclude=PATTERN排除:在统计时排除匹配指定模式的文件或目录。
-L跟踪符号链接 (Dereference):统计符号链接指向的源文件/目录的大小,而不是链接本身的大小。

重点介绍:du -ahd 1 及其排序

这是您发现非常有用的组合,用于查看当前目录下第一层的所有文件和子目录各自的大小,并包含当前目录的总大小。

bash
du -ahd 1
  • -a: 显示所有项,包括普通文件,而不仅仅是目录。
  • -h: 使用易读的单位 (K, M, G)。
  • -d 1: 深度限制为 1,只看当前目录这一层的内容。

1. 按大小排序(从大到小)

bash
du -ahd 1 | sort -rh
  • |: 这是管道符,将 du 命令的输出传递给 sort 命令进行处理。
  • sort: Linux 的排序命令。
  • -r: 反向 (Reverse) 排序,即从大到小。
  • -h: 易读数字 (Human-numeric-sort) 排序,能够正确处理 K, M, G 等单位,而不是按纯粹的数字或字母顺序。

效果:列出当前目录下第一层的所有文件和子目录,并按照它们占用的磁盘空间从大到小排列,最后一行通常是当前目录的总大小 (.)。

2. 按名称排序(字母顺序)

bash
du -ahd 1 | sort -k 2
  • |: 管道符,将 du 输出传给 sort
  • sort: 排序命令。
  • -k 2: 按第 2 列 (Key 2) 排序。du 命令输出的格式通常是 大小 文件名/目录名,所以第 2 列就是名称。默认按字母顺序排序。

效果:列出当前目录下第一层的所有文件和子目录,并按照它们的名称字母顺序排列。


其他常用法示例

  1. 查看当前目录总大小(最常用)

    bash
    du -sh # -s: 只显示总和, -h: 易读格式 # . (点) 代表当前目录,可以省略,也可以指定其他目录路径 du -sh /path/to/directory
  2. 查看指定目录下所有文件和子目录的大小(递归)

    bash
    du -ah /path/to/directory
  3. 找出当前目录下占用空间最大的前 10 个文件或目录

    bash
    du -ah . | sort -rh | head -n 10 # head -n 10: 只显示排序后的前 10 行
  4. 查看当前目录,但不包括某个子目录(例如 node_modules

    bash
    du -h --exclude='node_modules' --max-depth=1
  5. 统计多个指定目录的总大小

    bash
    du -sh dir1 dir2 dir3
  6. 统计并显示总和

    bash
    du -chd 1 # -c 会在最后加上一行 'total' 显示总计大小

注意事项

  • 权限:如果用户没有读取某些目录的权限,du 可能无法统计这些目录,并可能显示错误信息。使用 sudo du ... 可以获取权限,但需谨慎。
  • 隐藏文件du 默认会统计隐藏文件(以 . 开头的文件和目录)。
  • du vs dfdu 关注的是文件/目录实际占用的磁盘块空间总和,而 df (Disk Free) 显示的是整个文件系统(分区)级别的使用情况和剩余空间。它们统计的维度不同,有时结果可能看起来不一致(例如,有文件被删除但进程仍占用句柄时)。

du 是进行磁盘空间分析和管理不可或缺的命令,掌握其常用选项和组合用法能大大提高效率。