Linux目录大小查看的常用命令详解

Written by

in

文章目录
  • du(Disk Usage)命令是 Linux/Unix 系统中用于估算文件和目录磁盘使用情况的实用程序。它通过递归遍历目录结构,计算每个文件和子目录占用的磁盘空间,并以块为单位(默认情况下)显示结果。
  • Q1:为什么 du 和 df 显示的总空间不一致? A1:可能原因包括: 已删除但仍有进程打开的文件 文件系统保留空间 不同的统计方法(df 统计整个文件系统,du 统计具体文件) Q2:如何统计目录中的文件数量而非大小? A2:使用 find 和 wc: find data -type f | wc -l Q3:du 显示的 size 为什么比实际文件总和要大? A3:du 统计的是磁盘使用量,包括: 文件实际内容 文件系统元数据 由于块分配导致的额外空间 到此这篇关于Linux目录大小查看的常用命令详解的文章就介绍到这了,更多相关Linux目录大小查看内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 在Linux系统中查看目录大小的方法小结 linux下使用 du查看某个文件或目录占用磁盘空间的大小方法 Linux系统目录大小通过du命令获取实例 Linux下如何调整根目录的空间大小
  • 目录
    • 一、du 命令基础
      • 基本语法
      • 为什么需要 -h 选项?
    • 二、du -h 命令详解
      • 输出解读
      • 常用选项组合
    • 三、du 与其他命令的对比
      • du vs df
      • du vs ls -l
    • 四、实际应用场景
      • 1. 查找大目录
      • 2. 监控用户磁盘使用
      • 3. 排除特定目录
      • 4. 比较目录变化
    • 五、高级技巧与注意事项
      • 1. 处理符号链接
      • 2. 显示修改时间
      • 3. 性能优化
      • 4. 跨文件系统统计
    • 六、常见问题解答

      du(Disk Usage)命令是 Linux/Unix 系统中用于估算文件和目录磁盘使用情况的实用程序。它通过递归遍历目录结构,计算每个文件和子目录占用的磁盘空间,并以块为单位(默认情况下)显示结果。

      du [选项] [文件或目录]
      

      如果不指定文件或目录,du 会默认统计当前目录及其所有子目录的磁盘使用情况。

      原始的 du 命令输出以磁盘块为单位(通常 1 块=512 字节或 1KB),这种表示方式对人类阅读不够友好。例如:

      du data
      

      可能输出:

      123456  data/subdir1
      789012  data/subdir2
      912468  data
      

      这样的数字难以直观理解。-h(human-readable)选项的出现解决了这个问题,它会自动选择最合适的单位(KB、MB、GB 或 TB)来显示大小:

      du -h data
      

      输出变为:

      4.0K    data/subdir1
      8.2M    data/subdir2
      1.2G    data
      

      du -h 的典型输出包含多行信息:

      • 子目录行:显示每个子目录的大小和路径
      • 总计行(最后一行):显示指定目录的总大小

      例如:

      4.0K    data/subdir1
      8.2M    data/subdir2
      1.2G    data
      

      这里:

      • data/subdir1 占用 4.0KB
      • data/subdir2 占用 8.2MB
      • 整个 data 目录占用 1.2GB

      -s(汇总):仅显示总大小,不显示子目录详情

      du -sh data
      

      输出:

      1.2G    data
      

      -c(总计):在最后添加一个总计行

      du -hc data
      

      输出:

      4.0K    data/subdir1
      8.2M    data/subdir2
      1.2G    data
      1.2G    总用量
      

      --max-depth=N:控制显示的目录深度

      du -h --max-depth=1 data
      

      只显示 data 下第一级子目录的大小

      • du(Disk Usage):从文件系统角度计算文件和目录占用的空间
      • df(Disk Free):显示文件系统的整体磁盘使用情况

      du 更适合查找具体目录或文件占用的空间,而 df 更适合查看整个磁盘或分区的使用情况。

      • ls -l 显示的是文件的实际大小(逻辑大小)
      • du 显示的是文件占用的磁盘空间(可能因块分配而大于实际大小)

      例如,一个 1 字节的文件:

      • ls -l 显示 1 字节
      • du 可能显示 4KB(取决于文件系统的块大小)

      du -h / | sort -rh | head -n 20
      

      这条命令组合:

      • 从根目录开始计算所有目录大小
      • 按人类可读格式输出
      • 按大小逆序排序
      • 显示前 20 个最大的目录

      du -sh /home/*
      

      快速查看所有用户主目录的磁盘使用情况。

      du -h --exclude='*.log' /var
      

      统计 /var 目录大小,但排除所有 .log 文件。

      du -sh data
      # 进行一些操作后
      du -sh data
      

      通过两次执行比较目录大小的变化。

      默认情况下,du 会统计符号链接指向的文件大小。使用 -L 选项可以跟随符号链接:

      du -Lh /path
      

      结合 --time 选项可以显示最后修改时间:

      du -h --time data
      

      对于大型文件系统,du 可能需要较长时间。可以:

      • 使用 --apparent-size 显示表观大小而非磁盘使用量(更快但不够准确)
      • 限制目录深度 --max-depth
      • 在非高峰时段运行

      默认 du 会统计挂载点下的其他文件系统。使用 -x 可以限制在当前文件系统:

      du -xh /
      

      Q1:为什么 du 和 df 显示的总空间不一致?

      A1:可能原因包括:

      • 已删除但仍有进程打开的文件
      • 文件系统保留空间
      • 不同的统计方法(df 统计整个文件系统,du 统计具体文件)

      Q2:如何统计目录中的文件数量而非大小?

      A2:使用 find 和 wc

      find data -type f | wc -l
      

      Q3:du 显示的 size 为什么比实际文件总和要大?

      A3:du 统计的是磁盘使用量,包括:

      • 文件实际内容
      • 文件系统元数据
      • 由于块分配导致的额外空间

      到此这篇关于Linux目录大小查看的常用命令详解的文章就介绍到这了,更多相关Linux目录大小查看内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • 在Linux系统中查看目录大小的方法小结
      • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法
      • Linux系统目录大小通过du命令获取实例
      • Linux下如何调整根目录的空间大小

      站内搜索