如何查找占用磁盘空间的大文件?

1. 问题的场景

“磁盘空间不足!”是 Linux 用户经常会遇到的警告。通常,这都是由一些被遗忘的日志、备份或者下载文件引起的。手动查找这些“磁盘巨兽”非常低效,但我们可以用几个命令组合来快速定位它们。

2. 核心命令介绍

  • du (disk usage): 用于估算文件和目录的磁盘使用空间。
    • -h 参数使其以易于阅读的格式显示 (e.g., K, M, G)。
    • -s 参数表示只显示总计大小。
  • sort: 用于对文本行进行排序。
    • -r 参数表示反向排序(从大到小)。
    • -h 参数使其能理解易读格式的数字 (e.g., 1G > 10M)。
  • head: 用于显示文件的前几行。

3. 实战操作:定位 Top 10 大文件/目录

这是一个非常强大且常用的“一行禅”命令,让我们在当前目录下查找最大的10个文件或目录:

du -h | sort -rh | head -n 10

命令解析:

  1. du -h: 计算当前目录下所有文件和子目录的大小,并以 K/M/G 的形式显示。
  2. | (管道符): 将前一个命令的输出,作为后一个命令的输入。
  3. sort -rh: 接收 du 的输出,并按照大小从高到低进行排序。
  4. head -n 10: 接收排序后的结果,并只显示前10行,也就是最大的10个。

4. 进阶:使用 find 命令

如果你想在更复杂的条件下查找,比如“查找/home目录下所有大于100M的.log文件”,find 命令就派上用场了。

find /home -type f -name "*.log" -size +100M -exec ls -lh {} \;

命令解析:

  • find /home: 在 /home 目录下查找。
  • -type f: 只查找文件。
  • -name "*.log": 文件名以 .log 结尾。
  • -size +100M: 文件大小超过 100MB。
  • -exec ls -lh {} \;: 对找到的每一个文件 ({}),都执行 ls -lh 命令来显示其详细信息。

掌握这些命令组合,你就能成为一名高效的磁盘空间管理员!