首页 > 运维 > linux运维 > 正文

Linux统计目录大小du命令实例

P粉602998670
发布: 2025-09-17 12:17:01
原创
341人浏览过
使用 du 命令可统计文件和目录磁盘占用,结合 -s、-h、--max-depth、-a 等选项实现简洁或详细输出;通过 du -h /path | sort -rh | head -n 10 快速定位最大占用目录;du 与 df 不同,前者查看文件级占用,后者查看文件系统级空间;结合 find 与 xargs 可精确统计特定类型文件或排除指定目录。

linux统计目录大小du命令实例

du
登录后复制
命令在 Linux 中是一个极其强大的工具,专门用来统计文件和目录所占用的磁盘空间。它能让你迅速了解某个文件或目录究竟吞噬了多少存储,是排查磁盘空间不足问题的得力助手,也能帮你追踪数据增长的趋势。

解决方案

在使用

du
登录后复制
命令时,你会发现它有很多灵活的选项,能够满足不同的统计需求。最基础的用法是直接跟上目录路径,它会递归地列出该目录下所有子目录和文件的空间占用。

比如,我想看看当前目录的总体大小,我通常会这么做:

du -sh .
登录后复制

这里的

-s
登录后复制
(summary) 选项会只显示总计,而不是列出每个子目录的详细信息,而
-h
登录后复制
(human-readable) 则会将结果以人类更易读的单位(如 K, M, G)显示出来。这比默认的以块(block)为单位显示要直观得多。

如果你想深入了解某个特定目录,比如

/var/log
登录后复制
到底有多少日志文件,占用了多少空间,但又不想看到每个日志文件的详细大小,只想看子目录的总和,可以这样:

du -h --max-depth=1 /var/log
登录后复制

--max-depth=1
登录后复制
限制了
du
登录后复制
只下探一层目录,这在排查哪个子目录是“大户”时非常有用。我个人就很喜欢这个选项,它能让我快速锁定问题区域,而不会被海量的文件列表淹没。

有时候,我需要知道所有文件(包括隐藏文件)和目录的大小,这时候

-a
登录后复制
选项就派上用场了:

du -ah /path/to/directory
登录后复制

这会列出路径下所有文件和目录的大小,同样以人类可读的格式显示。

Linux统计目录大小du命令实例

如何快速找出Linux系统中占用空间最大的目录?

这绝对是运维或开发人员最常遇到的场景之一:服务器磁盘报警,你需要马上找出是哪个目录在“作妖”。我通常会先定位到可能出问题的挂载点,然后用

du
登录后复制
结合
sort
登录后复制
head
登录后复制
来快速筛选。

假设我的

/data
登录后复制
分区快满了,我想知道是哪个子目录占用了大部分空间。我会这么做:

sudo du -h /data | sort -rh | head -n 10
登录后复制

这里

sudo
登录后复制
是为了确保我有权限读取所有文件。
du -h /data
登录后复制
会列出
/data
登录后复制
下所有文件和目录的大小(递归)。然后,我用管道
|
登录后复制
把结果传递给
sort -rh
登录后复制
-r
登录后复制
表示反向排序(从大到小),
-h
登录后复制
则是让
sort
登录后复制
也能理解人类可读的单位。最后,
head -n 10
登录后复制
截取前10行,也就是占用空间最大的10个目录或文件。

这个组合命令简直是我的救星,它能让我迅速从茫茫多的目录中揪出真正的“胖子”,省去了大量手动检查的时间。我记得有一次,就是靠这个命令,我发现一个日志归档脚本出了问题,导致一个旧目录里堆积了TB级的日志文件,差点把整个文件系统撑爆。

ViiTor实时翻译
ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116
查看详情 ViiTor实时翻译
Linux统计目录大小du命令实例

du命令与df命令有何不同,何时选择使用它们?

这是一个经典的混淆点,很多人搞不清

du
登录后复制
df
登录后复制
区别,甚至会觉得它们是重复的。但实际上,它们关注的焦点完全不同。

du
登录后复制
(disk usage) 统计的是文件和目录实际占用的磁盘空间。它会遍历你指定路径下的所有文件和目录,累加它们的大小。这意味着,如果一个文件被多个硬链接引用,
du
登录后复制
可能会多次计算它的空间(尽管有些
du
登录后复制
版本会有优化,但基本原理是这样),或者如果文件是稀疏文件(sparse file),
du
登录后复制
报告的可能是其“逻辑大小”或“实际存储大小”,这取决于具体实现和选项。更重要的是,
du
登录后复制
报告的是文件系统内部的数据块使用情况。

df
登录后复制
(disk free) 统计的是文件系统的整体使用情况,它报告的是文件系统层面上的已用空间、可用空间和总空间。
df
登录后复制
不会去遍历文件,它直接查询文件系统的元数据来获取这些信息。这意味着,
df
登录后复制
看到的是文件系统分配给文件的块数,包括了文件系统本身的开销,以及一些可能已经删除但尚未释放的块(比如进程还在持有文件句柄的情况)。

我通常是这样使用的:

  • df -h
    登录后复制
    :当我需要快速了解整个服务器或某个分区还剩下多少空间时,我会用
    df
    登录后复制
    。比如,我想知道
    /
    登录后复制
    根目录或者
    /home
    登录后复制
    分区是不是快满了,
    df
    登录后复制
    能给我一个宏观的概览。
  • du -sh /path
    登录后复制
    :当我发现
    df
    登录后复制
    显示某个分区空间不足,需要找出具体是哪个目录或文件导致了空间消耗时,我就会切换到
    du
    登录后复制
    。它能帮我钻进文件系统内部,定位到具体的“罪魁祸首”。

简而言之,

df
登录后复制
看的是“水池的总量和水位”,而
du
登录后复制
看的是“水池里每条鱼和每块石头有多大”。两者结合使用,才能全面地掌握磁盘空间使用状况。

Linux统计目录大小du命令实例

如何精确统计特定文件类型或排除某些文件的目录大小?

有时候,我们不光想知道总大小,还想进行更细致的分析。比如,我只想知道一个项目目录下所有的

.log
登录后复制
文件占了多少空间,或者我想统计大小,但排除掉所有
node_modules
登录后复制
目录。
du
登录后复制
本身就带有一些过滤功能,或者我们可以结合其他命令来实现。

如果你想排除某些目录或文件模式,

du
登录后复制
--exclude
登录后复制
选项就非常方便。比如说,在一个开发项目中,
node_modules
登录后复制
目录通常会非常庞大,我可能想在统计项目大小时忽略它:

du -h --exclude="node_modules" --exclude="*.git" /path/to/my/project
登录后复制

这个命令会统计

/path/to/my/project
登录后复制
目录下所有文件和子目录的大小,但会跳过名为
node_modules
登录后复制
的目录以及所有以
.git
登录后复制
结尾的文件或目录。你可以多次使用
--exclude
登录后复制
来排除不同的模式。

如果我的需求更复杂,比如我只想统计所有

.jpg
登录后复制
图像文件的大小,这时候单独使用
du
登录后复制
就不够了。我会结合
find
登录后复制
命令来实现:

find /path/to/images -name "*.jpg" -print0 | xargs -0 du -ch
登录后复制

这个命令链的逻辑是这样的:

  1. find /path/to/images -name "*.jpg" -print0
    登录后复制
    :在指定路径下查找所有以
    .jpg
    登录后复制
    结尾的文件,并用
    print0
    登录后复制
    将文件名以 null 字符分隔输出。这样做是为了正确处理文件名中可能包含空格或特殊字符的情况。
  2. xargs -0 du -ch
    登录后复制
    xargs -0
    登录后复制
    接收
    find
    登录后复制
    输出的 null 分隔的文件名列表,然后对每个文件执行
    du -ch
    登录后复制
    命令。最终,
    du -ch
    登录后复制
    会计算每个
    .jpg
    登录后复制
    文件的大小,并在最后给出一个总和(因为有
    -c
    登录后复制
    选项)。

这种组合命令的灵活性非常高,能让我根据实际需求,精确地筛选出需要统计的目标,这对于进行精细化的存储审计和清理工作非常有帮助。我发现很多时候,只用

du
登录后复制
的基本功能是不够的,灵活运用管道和
find
登录后复制
xargs
登录后复制
这些工具,才能真正发挥出 Linux 命令行的强大威力。

以上就是Linux统计目录大小du命令实例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号