Linux 查看目录与文件大小:du 与 df 命令详解与实用技巧
在 Linux 系统中,管理和监控磁盘空间是日常运维和开发工作的重要部分。`du`(disk usage)和 `df`(disk free)是两个最核心的命令,用于查看文件和目录的磁盘使用情况以及文件系统的可用空间。本文将详细介绍这两个命令的常用选项、组合技巧以及实际应用场景。
1. 查看目录大小:du 命令
`du` 命令用于估算文件和目录的磁盘使用空间。它会递归遍历指定目录下的所有文件和子目录。
基本用法
- 查看当前目录总大小(人类可读格式):
du -sh - 查看当前目录下一级子目录和文件的大小:
du -h --max-depth=1 - 查看指定目录(如 /home)下一级内容的大小:
du -h --max-depth=1 /home - 查看当前目录下所有项的大小:
du -sh *
进阶技巧:排序与筛选
结合 `sort`、`head`、`tail` 和 `grep` 命令,可以快速定位占用空间大的目录。
- 按大小排序(降序):
du -sh /usr/* | sort -rh注意:`-r` 表示反向(降序),`-h` 让 `sort` 能正确理解人类可读的大小格式(如 K, M, G)。
- 仅显示前 10 个最大的目录:
du -sh /usr/* | sort -rh | head -n 10 - 仅显示后 10 个最小的目录:
du -sh /usr/* | sort -h | head -n 10 - 查找大小达到 GB 或 TB 级别的目录并排序:
du -h --max-depth=2 | grep -E '[0-9]+G|[0-9]+T' | sort -rh
2. 查看文件系统使用情况:df 命令
`df` 命令用于报告文件系统的磁盘空间使用情况,显示已用和可用的空间总量。
- 以人类可读格式查看所有文件系统:
df -h - 查看特定文件系统或挂载点(如 /home):
df -h /home
3. 实用场景:清理与删除
在了解空间占用后,通常需要进行清理。以下是一些安全的删除操作示例:
- 删除当前目录下的所有文件(慎用!):
rm -f * - 删除指定目录(如 logs)下的所有内容,但保留目录本身:
rm -rf /path/to/logs/* - 删除当前目录下除特定文件(如 keep)外的所有文件:
ls | grep -v keep | xargs rm -f更安全且支持复杂文件名的方式是使用 `find` 命令。
4. 常用命令总结
以下是一些高频组合命令,方便快速查阅:
# 统计并直观显示当前目录大小
du -sh
# 查看当前目录下一级子目录大小并排序
du -h --max-depth=1 | sort -h
# 查找大目录(G/T级别)并倒序排列
du -h --max-depth=2 | grep -E '[0-9]+G|[0-9]+T' | sort -rh
# 查看文件系统总体使用情况
df -h
注意事项
- 执行位置:使用 `du` 时,默认统计当前目录。若要统计其他目录,需在命令中指定路径(如 `du -sh /home`)。
- 权限:查看某些目录可能需要 `sudo` 权限。
- 符号链接:默认情况下,`du` 会跟踪符号链接。使用 `-L` 选项可强制跟踪,使用 `-P` 选项可避免跟踪(默认行为在某些版本中可能不同)。
- `df` 与 `du` 的差异:`df` 从文件系统层面统计,速度快;`du` 从文件层面统计,更精确但可能较慢,尤其目录很深时。
掌握 `du` 和 `df` 命令及其组合用法,能帮助你高效地监控 Linux 系统的磁盘空间,及时定位问题并执行清理,是系统管理和开发维护的必备技能。