du -ah 是 Linux 系统中用于查看磁盘空间使用情况的常用命令组合。下面详细解释其含义、作用以及典型用法。

命令解析:du -ah

  • du:即 “disk usage”,用于估算文件或目录占用的磁盘空间量。
  • -a:代表 “all”。默认情况下,du 命令只显示目录的汇总大小。加上 -a 选项后,它会列出指定目录下所有文件和子目录各自占用的空间大小。
  • -h:代表 “human-readable”。它会让命令的输出以易读的单位(如 K、M、G)显示大小,而不是默认的字节数,使得结果一目了然。

因此,du -ah 的作用是:以人类易读的格式,递归地显示指定目录(默认为当前目录)中每个文件、子目录以及目录本身占用的磁盘空间

常用场景与示例

  1. 查看当前目录下所有项目的详细大小 直接在命令行输入 du -ah,会列出当前目录下所有文件和子目录的占用空间。

  2. 查看指定目录的详细占用情况 在命令后加上目标路径即可,例如 du -ah /home/user/documents,会显示该路径下所有内容的磁盘使用情况。

  3. 结合其他命令进行深度分析

    • 限制查看深度:使用 --max-depth=N 选项可以控制递归的层级。例如,du -ah --max-depth=1 只显示当前目录下一级子项(文件和目录)的大小,而不会深入其子目录。
    • 按大小排序:为了快速找出占用空间最大的文件或目录,可以结合 sort 命令。例如:
      du -ah --max-depth=1 | sort -hr
      
      这条命令会先获取当前目录下一级子项的大小,然后通过 sort -hr 进行从大到小的排序(-h 支持人类可读格式的数值排序,-r 表示反向排序)。这对于排查磁盘空间不足的问题非常有效。
    • 仅查看大文件:可以使用 --threshold 选项过滤掉小文件。例如,du -ah --threshold=100M 只会显示大小超过 100MB 的条目,帮助聚焦于主要空间占用者。

与其他 du 选项的对比

  • du -sh-s (summarize) 选项与 -a 相反,它只显示目录的总计大小,而不列出其中的具体文件和子目录。du -sh 是快速了解一个目录整体占用空间的快捷方式。
  • du -sh *:这是一个非常实用的组合。它在当前目录下执行,会分别显示每个子项(文件或目录)的汇总大小,然后可以通过管道传递给 sort -h 进行排序,例如 du -sh * | sort -h

总结来说,du -ah 是一个强大的基础命令,适合需要详细分析目录内磁盘空间分布的场景。通过结合 --max-depthsort--threshold 等工具,可以构建出更高效、针对性更强的磁盘空间分析命令链。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐