使用 UNIX 工具确定文件大小的安全方法?

使用 UNIX 工具确定文件大小的安全方法?

我想知道,使用常见的 unix 工具确定文件大小的最佳方法是什么。我需要在 shell 脚本中确定文件的大小(以字节为单位)。问题是,shell 脚本需要跨不同的操作系统(如 osx、irix、linux)移植——也就是说:使用“stat”命令可能效果不佳,因为在几乎每个操作系统上,获取我想要的结果所需的参数都不同。

我尝试使用:

cat ... | wc -c

虽然这似乎很有效,但在多字节环境中可能会遇到问题,不是吗?那么:有什么好方法可以做到这一点?

答案1

为此,您可以使用以下内容:

du --block-size=1 filename

我不知道它的可移植性。在命令的手册页中,它被列在 GNU coreutils 包中。

如果要确定文件的大小,而不是其占用的磁盘空间,请添加--表观尺寸

答案2

cksum 文件

维基百科

互操作性

大多数类 UNIX 操作系统(包括 GNU/Linux、*BSD、Mac OS X 和 Solaris)上的标准 cksum 命令使用基于以太网标准帧校验的 CRC 算法,因此可以在实现之间互操作

当然,互操作性是针对校验和而言的,而不是针对计数字节部分。

答案3

stat -c %s /path/to/filename

答案4

man wc

打印换行符、单词和 字节计数

user@machine:~$ ls -lh datefix.vim
-rw-r--r-- 1 user     group     264 2011-06-28 23:26 datefix.vim
user@machine:~$ wc datefix.vim
  6  12 264 datefix.vim
user@machine:~$ wc datefix.vim | awk '{print $3}'
264

wc不知道也不关心 Unicode——它认为一个字节就是一个字节。我还在一个 234 MB 的 .lzma 文件上测试了这一点以证明这一点……所以简单wc -c也能让你得到你想要的东西。

相关内容