一尘不染

在shell中获取文件大小(以字节为单位)的可移植方式?

linux

在Linux上,我使用stat --format="%s" FILE,但是我可以访问的Solaris没有stat命令。那我该怎么用呢?

我正在编写Bash脚本,无法在系统上真正安装任何新软件。

我已经考虑过使用:

perl -e '@x=stat(shift);print $x[7]' FILE

甚至:

ls -nl FILE | awk '{print $5}'

但是,这些看上去都不明智-运行Perl只是为了获取文件大小?还是运行2个命令来执行相同的操作?


阅读 856

收藏
2020-06-07

共1个答案

一尘不染

wc -c < filename(字数的缩写,-c打印字节数)是一种便携式POSIX解决方案。在某些平台上,只有输出格式可能不统一,因为可能会预先加上一些空格(对于Solaris就是这种情况)。

不要忽略输入重定向。当文件作为参数传递时,文件名将在字节数之后打印。

我担心它不适用于二进制文件,但是在Linux和Solaris上都可以正常工作。您可以尝试使用wc -c < /usr/bin/wc。此外,除非另有明确说明,否则POSIX实用程序可确保处理二进制文件

2020-06-07