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
命令