如何在 Linux 中获取文件或目录的大小

理解 Linux du 命令:磁盘使用量与文件实际大小

当使用 Linux 的 du 命令时,你会发现它提供的磁盘使用量数据可能与文件或目录的真实大小有所差异。本文将深入探讨造成这种差异的原因。

磁盘占用空间与文件真实大小的差异

通常,文件在硬盘上占用的实际空间与其自身大小(即包含的字节数)并不完全一致。这是因为磁盘空间是以数据块为单位进行分配的。即使文件的大小小于一个数据块,整个数据块仍然会被分配给该文件,因为文件系统无法使用比数据块更小的单位。

除非文件的大小恰好是数据块大小的整数倍,否则其在硬盘上的占用空间总是需要向上取整到下一个完整的数据块。例如,如果一个文件的大小大于两个数据块但小于三个数据块,它仍然需要占用三个数据块的空间才能被完整地存储。

关于文件大小,我们通常会遇到两种度量标准:第一种是文件的实际大小,即组成文件内容的字节数;第二种是文件在硬盘上的有效大小,即存储文件所需要的数据块数量。

举例说明

为了更好地理解这一点,我们来看一个简单的例子。我们通过重定向一个字符到一个文件中来创建一个小文件:

echo "1" > geek.txt

现在,我们使用 ls -l 命令来查看该文件的长度:

ls -l geek.txt

输出结果显示,文件长度是 dave dave 之后的值,即 2 个字节。为什么我们只发送了一个字符,却得到两个字节呢?让我们深入了解文件内部发生了什么。

我们将使用 hexdump 命令,它可以精确显示字节数,并允许我们以十六进制值的形式看到不可打印的字符。我们还将使用 -C (规范) 选项来强制输出显示在…