【问题标题】:How to get file size in bytes from shell script?如何从 shell 脚本获取文件大小(以字节为单位)?
【发布时间】:2013-09-12 10:22:07
【问题描述】:

我正在尝试创建一个脚本来为 Apple 的 ITMSP Transporter 文件编写 XML 文件,以便将元数据上传到 App Store。屏幕截图的要求是文件名、MD5 校验和和文件大小(以字节为单位)。

MD5校验码很简单,可以用md5 -q image.png检索

但是,我很难尝试获取图像文件的字节大小。如果我使用du -k image.png 命令,它会返回以千字节为单位向上取整的大小。例如,如果实际大小为 5722 字节,du 将返回 8(如 8K 或 8192 字节),这是不正确的。 du 的默认值是 512 字节块,但仍会将值向上舍入(因此它将返回 16 而不是 8)。

我正在运行 Lion OSX 10.7.4。

【问题讨论】:

    标签: macos bash terminal


    【解决方案1】:

    一种简单的方法是:

    stat -f%z image.png
    

    stat 通常会吐出一堆数据,但%z 格式只是选择以字节为单位的大小。

    【讨论】:

    • 太棒了!我以前没有使用过该命令。 +1 为我发布后 2 分钟的快速响应!
    • stat: 无效选项 -- '%' :(
    • 如果我想要它,比如兆字节怎么办?
    • @pixel67 呃,不......这只会显示大小(以字节为单位),后面带有“兆字节”一词
    • @user3019105 不是一个好主意。根据您的语言环境设置,wc 可能会尝试计算 UTF-8 字符而不是字节数,这在二进制数据上无法正常工作。
    【解决方案2】:

    在 OSX 上执行 stat -f "%z bytes"

    【讨论】:

    • 在我的机器 (macOS Big Sur 11.4 (20F71)) 上不起作用。但是,这样做: stat -c %s FILE
    猜你喜欢
    • 2015-01-24
    • 2013-02-01
    • 2012-02-17
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多