busybox 上的 stat 命令文件大小报告

busybox 上的 stat 命令文件大小报告

我正在尝试在 busybox 中编写一个 shell 脚本来检查文件的文件大小。了解到 stat 比 ls 更可靠后,我决定使用它,但不知何故在使用以下命令时:

stat -c %s filename

我得到以下输出:559795。这适用于以下 2 个文件(使用 ls -la 显示):

0 Jan 20 16:32 foo_empty
4 Jan 20 16:32 foo_not_empty

有人知道那里发生了什么吗?我可以回去使用 ls,但我不明白这里发生了什么,这让我很困扰。

答案1

如果 stat 报告的文件大小、块数、inode 和设备数都是相同的奇数。我怀疑文件系统损坏了。您可以尝试 fsck,看看它是否能发现/修复问题。

答案2

对我有用:

ls -l foo_*
-rw------- 1 fooo users    0 Jan 20 10:30 foo_empty
-rw------- 1 fooo users 3767 Jan 20 10:30 foo_not_empty

busybox stat -c %s foo_empty; busybox stat -c %s foo_not_empty 
0
3767

您是否正在使用旧版本的 busybox,可能是在 64 位操作系统上?我正在使用

BusyBox v1.19.3 (2012-01-03 13:39:53 PST) multi-call binary.

答案3

就我而言, (嵌入式系统)stat缺少busybox。对我来说,性能不是问题,所以我最终选择了file_size="$(wc -c ./this-file)"

答案4

您还可以使用du它来检查文件大小。du -h将为您提供“人类可读的”输出。

相关内容