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

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

我试着用:

cat ... | wc -c 

虽然这似乎工作得很好,我可能会在多字节环境中的问题,不是吗? 那么,做这件事的好方法是什么?

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

 du --block-size=1 filename 

我不知道它的可移植性。 在命令的手册页中列出了GNU coreutils软件包。

如果要确定文件的大小,而不是磁盘上占用的空间,请添加–apparent-size

cksum文件

从维基百科

互通性

标准cksum命令(在大多数类UNIX操作系统(包括GNU / Linux,* BSD,Mac OS X和Solaris)中使用基于以太网标准帧检查的CRCalgorithm,因此可以在实现

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

stat -c %s /path/to/filename

lsawk是相当标准的。 你可以试试

 ls -l file | awk '{print $5}' 
 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文件上testing了这一点,以certificate它…所以一个简单的wc -c也将得到你想要的。