目录
- 方法一:ls -l 输出的第五列
- 方法二:du 命令的输出信息
- 方法三:stat -c %s 的输出
方法一:ls -l 输出的第五列
ls
是列出指定目录下文件列表的命令,通过 -l
选项可以显示文件的属性信息,第五列显示的就是文件的大小。
- 统计原理:通过
ls -l
查看某个文件的大小时,是读取该文件inode
块(存储属性信息部分)中记录的文件大小字段的值。 - 默认单位:字节(Byte)
- 使用场景:需要快速查看某个非目录文件的大小,不适合脚本中使用。
- 常用参数:
-h
:会根据文件的大小来自动选择显示单位。
- 使用限制:不能统计某个目录文件中所有文件大小的总和,查看目录文件大小时显示的是目录的元数据大小(一般是 4096 字节)
例如:查看某个文本文件的大小
方法二:du 命令的输出信息
du 命令(Disk Usage)显示的是文件或目录实际占用的磁盘空间,不是文件真实内容大小。
- 统计原理:通过读取 inode 中的 st_blocks 字段来知道该文件数据部分占用了多少数量的block,然后再乘以块大小(通常为 512B 或 4KB)来计算总占用量。
- 默认单位:千字节(KB)
- 使用场景:需要查看单个文件或统计整个目录所占用的硬盘空间大小。
- 常用单位:
-h
:会根据文件的大小来自动选择显示单位。-s
:查看某个目录时,只输出该目录及其目录下的所有文件占用的硬盘空间大小。
- 使用限制:因为需要遍历子目录和子文件,再系统高负载或者文件多且大的时候,统计速度很慢。
例如:查看指定目录的硬盘空间占用
方法三:stat -c %s 的输出
stat
命令是一个用于显示文件状态信息的命令,但是stat
提供的 -c(或 --format)
可以自定义需要输出的内容,%s
表示以字节为单位输出文件的大小。
- 统计原理:统计文件大小的时候,是通过读取
inode
中记录的文件大小字段来输出文件的大小,所以统计文件大小的速度很快。 - 命令格式:
stat -c %s filename
- 默认单位:字节(Byte)
- 使用场景:一般用于需要精确快速查看某个非目录文件大小的场景,例如脚本文件中。
- 使用限制:统计目录文件时候,只能看到目录的元数据大小,不会输出目录总大小
例如:查看某个文本文件的大小