博客 / Linux/ Linux 查看目录与文件大小:du 与 df 命令详解与实用技巧

Linux 查看目录与文件大小:du 与 df 命令详解与实用技巧

Linux 查看目录与文件大小:du 与 df 命令详解与实用技巧

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 系统的磁盘空间,及时定位问题并执行清理,是系统管理和开发维护的必备技能。

发表评论

您的邮箱不会公开。必填项已用 * 标注。