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

在 Linux 上,我使用 stat --format="%s"FILE,但 Solaris我有权访问的机器没有 stat 命令。那我应该用什么?

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

我已经考虑过使用:

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

甚至:

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

但这些看起来都不明智 - 运行 Perl只是为了获取文件大小?或者运行两个程序来做同样的事情?

最佳答案

wc -c < filename (字数的缩写,-c 打印字节数)是可移植的,POSIX解决方案。只有输出格式可能在平台之间不统一,因为可能会在前面添加一些空格(Solaris 就是这种情况)。

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

我担心它不适用于二进制文件,但它在 Linux 和 Solaris 上都可以正常工作。你可以试试wc -c < /usr/bin/wc .此外,POSIX 实用程序是 guaranteed to handle binary files , 除非另有明确说明。

https://stackoverflow.com/questions/1815329/

相关文章:

python - 使用 Python 解析 HTML

python - 为 Python 项目添加 .gitignore 文件的最佳实践?

linux - 查找文件并将它们 tar(带空格)

linux - 查找连接到 Linux 机器的所有存储设备

c - 为什么需要 .bss 段?

python - 为什么 Python 的 math.ceil() 和 math.floor() 操

linux - 如何在 Linux 上将行添加到文件末尾

python - 从字符串变量导入模块

python - 子进程 Popen 和 call 有什么区别(我该如何使用它们)?

linux - 获取后台进程的退出代码