Я пытаюсь написать сценарий оболочки в busybox, чтобы проверить размер файла. Прочитав, что 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, но я не понимаю, что здесь происходит, и это меня беспокоит ...
если stat сообщает одно и то же нечетное число для размера файла, количества блоков, inode и устройства. Я подозреваю повреждение файловой системы. Вы можете попробовать fsck и посмотреть, найдет ли он / исправит проблемы.
Работает для меня:
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.
Вы также можете использовать du
чтобы проверить размер файла. du -h
предоставит вам "читаемый человеком" вывод.