Linux常用命令学习笔记:du

1. 命令概述

  • 命令名称du(英文全拼:disk usage)
  • 核心功能显示文件或目录的磁盘使用情况
  • 主要用途:查看文件和目录占用的磁盘空间大小
  • 特点:显示磁盘使用量,支持递归计算、排序、过滤等功能

2. 语法格式

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

3. 常用选项

选项说明
-h以人类可读的格式显示(KB、MB、GB)
-s显示总计,不显示子目录
-c显示总计,并在最后显示总计行
-a显示所有文件和目录的磁盘使用情况
-d指定显示目录深度
--max-depth=N指定显示目录深度
-b以字节为单位显示
-k以KB为单位显示
-m以MB为单位显示
-x跳过不同文件系统上的目录
--exclude=PATTERN排除匹配模式的文件
--time显示文件或目录的修改时间
--help显示帮助信息
--version显示版本信息

4. 基本操作

(1) 基本磁盘使用查看

# 显示当前目录的磁盘使用情况
du

# 以人类可读格式显示
du -h

# 显示总计大小
du -s

# 显示总计并以人类可读格式显示
du -sh

# 显示总计并在最后显示总计行
du -c

# 显示所有文件和目录
du -a

# 显示所有文件并以人类可读格式显示
du -ah

(2) 指定目录深度

# 显示当前目录下第一级子目录的大小
du -h --max-depth=1

# 显示当前目录下第二级子目录的大小
du -h --max-depth=2

# 显示指定目录下第一级子目录的大小
du -h --max-depth=1 /path/to/dir

# 显示指定目录下所有子目录的大小
du -h --max-depth=0 /path/to/dir

# 显示指定目录下所有文件和子目录的大小
du -h --max-depth=1 /path/to/dir

(3) 指定单位显示

# 以字节为单位显示
du -b

# 以KB为单位显示
du -k

# 以MB为单位显示
du -m

# 以GB为单位显示
du -h

# 以人类可读格式显示总计
du -sh

# 以人类可读格式显示所有文件
du -ah

(4) 过滤和排除

# 排除指定模式的文件
du -h --exclude="*.log"

# 排除多个模式的文件
du -h --exclude="*.log" --exclude="*.tmp"

# 排除目录
du -h --exclude="dir"

# 排除多个目录
du -h --exclude="dir1" --exclude="dir2"

# 排除隐藏文件
du -h --exclude=".*"

5. 常用实例详解

(1) 基本磁盘使用查看示例

# 显示当前目录的磁盘使用情况
du
# 输出:
# 4       ./dir1
# 8       ./dir2
# 12      .

# 以人类可读格式显示
du -h
# 输出:
# 4.0K    ./dir1
# 8.0K    ./dir2
# 12K     .

# 显示总计大小
du -s
# 输出:12

# 显示总计并以人类可读格式显示
du -sh
# 输出:12K

# 显示总计并在最后显示总计行
du -c
# 输出:
# 4       ./dir1
# 8       ./dir2
# 12      .
# 12      total

# 显示所有文件和目录
du -a
# 输出:
# 4       ./dir1/file1.txt
# 4       ./dir1
# 8       ./dir2/file2.txt
# 8       ./dir2
# 12      .

(2) 指定目录深度示例

# 显示当前目录下第一级子目录的大小
du -h --max-depth=1
# 输出:
# 4.0K    ./dir1
# 8.0K    ./dir2
# 12K     .

# 显示当前目录下第二级子目录的大小
du -h --max-depth=2
# 输出:
# 4.0K    ./dir1/file1.txt
# 4.0K    ./dir1
# 8.0K    ./dir2/file2.txt
# 8.0K    ./dir2
# 12K     .

# 显示指定目录下第一级子目录的大小
du -h --max-depth=1 /home/user
# 输出:
# 4.0K    /home/user/dir1
# 8.0K    /home/user/dir2
# 12K     /home/user

# 显示指定目录下所有子目录的大小
du -h --max-depth=0 /home/user
# 输出:12K     /home/user

# 显示指定目录下所有文件和子目录的大小
du -h --max-depth=1 /home/user
# 输出:
# 4.0K    /home/user/dir1
# 8.0K    /home/user/dir2
# 12K     /home/user

(3) 指定单位显示示例

# 以字节为单位显示
du -b
# 输出:
# 4096    ./dir1
# 8192    ./dir2
# 12288   .

# 以KB为单位显示
du -k
# 输出:
# 4       ./dir1
# 8       ./dir2
# 12      .

# 以MB为单位显示
du -m
# 输出:
# 0       ./dir1
# 0       ./dir2
# 0       .

# 以GB为单位显示
du -h
# 输出:
# 4.0K    ./dir1
# 8.0K    ./dir2
# 12K     .

# 以人类可读格式显示总计
du -sh
# 输出:12K

# 以人类可读格式显示所有文件
du -ah
# 输出:
# 4.0K    ./dir1/file1.txt
# 4.0K    ./dir1
# 8.0K    ./dir2/file2.txt
# 8.0K    ./dir2
# 12K     .

(4) 过滤和排除示例

# 排除指定模式的文件
du -h --exclude="*.log"
# 输出:不显示.log文件

# 排除多个模式的文件
du -h --exclude="*.log" --exclude="*.tmp"
# 输出:不显示.log和.tmp文件

# 排除目录
du -h --exclude="dir1"
# 输出:不显示dir1目录

# 排除多个目录
du -h --exclude="dir1" --exclude="dir2"
# 输出:不显示dir1和dir2目录

# 排除隐藏文件
du -h --exclude=".*"
# 输出:不显示隐藏文件

6. 实际应用场景

场景一:磁盘空间分析

# 查看当前目录下各子目录的大小
du -h --max-depth=1

# 查看指定目录下各子目录的大小
du -h --max-depth=1 /path/to/dir

# 查看当前目录下所有文件的大小
du -ah

# 查看指定目录下所有文件的大小
du -ah /path/to/dir

# 查看当前目录的总大小
du -sh

# 查看指定目录的总大小
du -sh /path/to/dir

场景二:大文件查找

# 查找当前目录下大于100M的文件
du -ah | grep -E "[0-9]+M" | sort -rh | head -10

# 查找当前目录下大于1G的文件
du -ah | grep -E "[0-9]+G" | sort -rh | head -10

# 查找指定目录下大于100M的文件
du -ah /path/to/dir | grep -E "[0-9]+M" | sort -rh | head -10

# 查找当前目录下大于100M的文件并排序
du -ah | sort -rh | grep -E "[0-9]+M" | head -10

# 查找当前目录下大于100M的文件并显示路径
du -ah | grep -E "[0-9]+M" | sort -rh | head -10 | awk '{print $2}'

场景三:磁盘空间清理

# 查看当前目录下各子目录的大小并排序
du -h --max-depth=1 | sort -rh

# 查看当前目录下所有文件的大小并排序
du -ah | sort -rh

# 查看当前目录下大于100M的文件并排序
du -ah | grep -E "[0-9]+M" | sort -rh

# 查看当前目录下大于1G的文件并排序
du -ah | grep -E "[0-9]+G" | sort -rh

# 查看当前目录下大于100M的文件并删除
du -ah | grep -E "[0-9]+M" | sort -rh | head -10 | awk '{print $2}' | xargs rm -rf

场景四:磁盘空间监控

# 监控当前目录的大小
du -sh

# 监控指定目录的大小
du -sh /path/to/dir

# 监控当前目录下各子目录的大小
du -h --max-depth=1

# 监控指定目录下各子目录的大小
du -h --max-depth=1 /path/to/dir

# 监控当前目录下所有文件的大小
du -ah

# 监控指定目录下所有文件的大小
du -ah /path/to/dir

7. 与其他命令的区别

命令特点适用场景
du显示文件或目录的磁盘使用情况查看文件和目录大小
df显示文件系统的磁盘空间使用情况查看磁盘空间占用
ls列出目录内容查看文件列表
find查找文件查找指定条件的文件
sort排序对输出进行排序

8. 注意事项

  1. 权限问题:普通用户只能查看有权限的文件和目录
  2. 符号链接:默认显示符号链接指向的文件大小,使用 -L选项显示符号链接本身大小
  3. 递归深度:使用 --max-depth选项控制递归深度
  4. 单位显示:使用 -h选项以人类可读格式显示
  5. 总计显示:使用 -s选项显示总计,使用 -c选项显示总计行

9. 常见问题解决

(1) 权限不足

# 错误:权限不足
du /root  # 报错:Permission denied

# 正确:使用sudo
sudo du /root

# 正确:查看有权限的目录
du /home

# 正确:查看当前用户的主目录
du ~

# 正确:查看公共目录
du /tmp

(2) 文件或目录不存在

# 错误:文件或目录不存在
du /nonexistent  # 报错:No such file or directory

# 正确:检查文件或目录是否存在
ls -d /path/to/dir

# 正确:使用存在的目录
du /home

# 正确:使用当前目录
du .

# 正确:使用根目录
du /

(3) 选项错误

# 错误:选项错误
du -x  # 报错:缺少参数

# 正确:指定文件系统类型
du -x /path/to/dir

# 错误:目录深度错误
du --max-depth  # 报错:缺少参数

# 正确:指定目录深度
du --max-depth=1

# 错误:排除模式错误
du --exclude  # 报错:缺少参数

# 正确:指定排除模式
du --exclude="*.log"

(4) 输出格式问题

# 错误:输出格式不友好
du  # 以块为单位显示

# 正确:使用人类可读格式
du -h

# 错误:缺少总计信息
du  # 不显示总计

# 正确:显示总计
du -s

# 错误:缺少总计行
du -s  # 不显示总计行

# 正确:显示总计行
du -c

# 错误:缺少所有文件信息
du  # 不显示所有文件

# 正确:显示所有文件
du -a

核心要点总结

  • du是显示文件或目录磁盘使用情况的命令,用于查看文件和目录的大小
  • 常用选项-h(人类可读格式)、-s(显示总计)、-c(显示总计行)、-a(显示所有文件)、--max-depth=N(指定目录深度)
  • 实际应用:磁盘空间分析、大文件查找、磁盘空间清理、磁盘空间监控
  • 注意事项:普通用户只能查看有权限的文件和目录,使用 -h选项以人类可读格式显示

du命令是Linux系统磁盘空间管理的基础工具,熟练掌握可以大大提高系统管理效率。


作 者:南烛
链 接:https://www.itnotes.top/archives/463
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇