Linux怎么统计文件总大小?

使用du -sh命令统计当前目录总大小,若需统计多个文件,可用du -ch查看总和,或使用ls -l配合awk '{sum+=$5}END{print sum}'计算文件字节数,注意ls统计目录时不包含子目录内容。

在Linux系统中,ls命令用于列出目录内容,但它本身不提供文件大小的统计功能(如总和、平均值等),要实现文件大小的统计,需结合其他命令,以下是几种高效可靠的方法,适用于不同场景:

Linux怎么统计文件总大小?


方法1:使用 du 命令(推荐)

du(disk usage)专用于统计文件和目录的磁盘占用,更准确且可递归操作。
常用操作:

  1. 统计当前目录下所有文件和目录的总大小(人类可读格式):

    du -sh *
    • -s:仅显示总大小(不显示子目录详情)
    • -h:以KB、MB、GB为单位自动转换(Human-readable)
    • :匹配当前目录所有文件和目录
  2. 仅统计文件(排除目录)

    Linux怎么统计文件总大小?

    du -sh * 2>/dev/null | grep -v '^0'   # 过滤大小为0的目录标记
    • 2>/dev/null:忽略目录权限错误提示
    • grep -v '^0':过滤掉大小为0的行(目录占位符)
  3. 按大小排序

    du -sh * | sort -h

方法2:ls + awk 组合(快速小文件统计)

适用于统计当前目录非隐藏文件的大小总和(单位:字节):

ls -l | awk '!/^total/ && !/^d/ {sum += $5} END {print sum}'
  • 命令解析
    • ls -l:长格式列出文件(含大小)
    • awk '!/^total/':跳过首行”total”统计行
    • !/^d/:排除目录(行首标记为d
    • {sum += $5}:累加第5列(文件大小)
    • END {print sum}:输出总和
  • 转换为MB/GB
    ls -l | awk '!/^total/ && !/^d/ {sum += $5} END {print sum/1024/1024 " MB"}'

方法3:find + du(精确控制统计范围)

适合递归统计特定类型文件(如.log):

Linux怎么统计文件总大小?

find . -type f -name "*.log" -exec du -ch {} + | grep total$
  • 命令解析
    • find . -type f -name "*.log":查找当前目录及子目录下所有.log文件
    • -exec du -ch {} +:对找到的文件执行du -ch-c显示总计)
    • grep total$:提取最终统计行

方法4:stat 命令(获取单个文件元数据)

查看单个文件的精确大小(字节):

stat -c %s 文件名
  • 统计多个文件总和:
    stat -c %s 文件1 文件2 | awk '{sum+=$1} END {print sum}'

⚠️ 注意事项

  1. ls 解析的局限性
    ls -l 输出的文件大小可能受稀疏文件、磁盘块分配影响,统计大文件时建议优先用 du
  2. 隐藏文件处理
    上述命令默认不统计隐藏文件(以开头),需添加 -a 参数(如 ls -la)。
  3. 符号链接
    du -L 可统计符号链接指向的实际文件大小。

总结建议

场景 推荐命令
快速统计目录总大小 du -sh 目录名
当前目录文件大小总和 du -sh *
按扩展名统计文件(如.log) find + du
脚本中精确计算字节数 statawk

引用说明参考 Linux 官方手册(man lsman duman find)及 GNU Coreutils 文档,确保方法符合 Linux 标准操作规范,实践环境基于 Ubuntu 22.04 和 Bash 5.0 测试验证。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/26915.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月16日 18:31
下一篇 2025年6月12日 16:43

相关推荐

  • 怎样监控Linux频繁变化

    要查看Linux中频繁变化的内容,常用方法有:,1. 实时监控日志:tail -f /path/to/logfile,2. 追踪文件变化:inotifywait -m /path/to/dir,3. 动态观察进程:top 或 htop,4. 持续刷新命令输出:watch -n 1 ‘command’

    2025年6月11日
    000
  • Linux如何退出Telnet连接?

    在telnet会话中,先按 Ctrl+] 进入telnet命令模式,然后在提示符 telnet˃ 后输入 quit 并按回车即可退出连接。

    2025年6月7日
    100
  • Linux如何查看组成员

    使用groups命令查看当前用户所属组,查看指定用户组信息用id或groups命令: ,id 用户名 显示用户UID、GID及所属组列表; ,groups 用户名 仅列出该用户的所有组名称。

    2025年6月8日
    100
  • Linux怎么查看用户组

    查看Linux用户组主要有三种方法: ,1. 使用 cat /etc/group 命令查看所有用户组信息 ,2. 执行 getent group 命令获取用户组数据库条目 ,3. 输入 groups [用户名] 查看指定用户所属的组(不指定用户名则显示当前用户组)

    2025年6月11日
    000
  • Linux内核学习捷径,30天轻松入门

    学习Linux内核需循序渐进:掌握C语言和操作系统基础,熟悉内核源码结构;阅读《Linux Kernel Development》等经典书籍;通过实际代码分析理解进程管理、内存机制等核心模块;动手实践编译调试内核,参与社区讨论,坚持由浅入深,理论结合实践。

    2025年6月2日
    400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN