du命令

du 命令 #

du命令(disk usage)用于估计文件和目录的磁盘空间使用情况。它可以递归地计算目录的大小,帮助您找出占用磁盘空间最多的文件和目录。

语法 #

du [选项] [文件...]

常用选项 #

选项 描述
-a, --all 显示所有文件的大小,而不仅仅是目录
-b, --bytes 以字节为单位显示大小
-c, --total 显示总计大小
-d, --max-depth=N 只显示指定层级的目录深度
-h, --human-readable 以人类可读的格式显示大小(KB, MB, GB)
-H, --si 类似于-h,但使用 1000 而不是 1024 作为单位换算基数
-k 以千字节为单位显示大小
-m 以兆字节为单位显示大小
-s, --summarize 只显示每个参数的总计
-S, --separate-dirs 不包括子目录的大小
-x, --one-file-system 跳过不同文件系统上的目录
--apparent-size 显示表观大小而不是磁盘使用量
--time 显示目录或文件的最后修改时间

常见用法 #

1. 显示当前目录及其子目录的大小 #

du

输出示例(以 KB 为单位):

4       ./dir1/subdir
8       ./dir1
4       ./dir2
16      .

2. 以人类可读的格式显示 #

du -h

输出示例:

4.0K    ./dir1/subdir
8.0K    ./dir1
4.0K    ./dir2
16K     .

3. 只显示总计大小 #

du -sh

输出示例:

16K     .

4. 显示当前目录中所有文件和目录的大小 #

du -ah

输出示例:

4.0K    ./file1.txt
0       ./empty_file.txt
4.0K    ./dir1/file2.txt
4.0K    ./dir1/subdir
8.0K    ./dir1
4.0K    ./dir2
16K     .

5. 显示指定目录的大小 #

du -sh /path/to/directory

6. 显示多个目录的大小 #

du -sh dir1 dir2 dir3

输出示例:

8.0K    dir1
4.0K    dir2
12K     dir3

7. 显示总计 #

du -ch dir1 dir2

输出示例:

8.0K    dir1
4.0K    dir2
12K     total

8. 限制目录深度 #

du -h --max-depth=1

du -h -d 1

输出示例:

8.0K    ./dir1
4.0K    ./dir2
16K     .

9. 按大小排序(从大到小) #

du -h | sort -hr

输出示例:

16K     .
8.0K    ./dir1
4.0K    ./dir2
4.0K    ./dir1/subdir

10. 显示前 N 个最大的目录或文件 #

du -ah | sort -hr | head -n 5

11. 不包括子目录的大小 #

du -Sh

12. 只统计特定类型的文件 #

find . -name "*.txt" -exec du -ch {} \; | grep total$

13. 显示文件的表观大小 #

du --apparent-size -sh file.txt

14. 跳过不同文件系统上的目录 #

du -xh /

提示 #

  • 使用-h选项可以获得最易读的输出格式
  • 结合sort命令可以帮助找出占用空间最多的目录
  • 使用--max-depth选项可以限制输出的详细程度
  • du命令计算的是文件或目录在磁盘上实际占用的空间,这可能与文件的表观大小不同
  • 对于大型目录,du命令可能需要较长时间才能完成
  • 使用-x选项可以防止du跨越文件系统边界,这在分析根目录时特别有用
  • 在脚本中使用du时,可以使用-b选项获取精确的字节数
  • 使用-c选项可以获得多个目录的总大小
  • 使用--time选项可以查看文件或目录的最后修改时间
  • 在某些系统上,du可能无法访问某些目录,这时可以使用sudo du命令