我正在尝试在 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
将为您提供“人类可读的”输出。