
Как узнать размер файла в МБ в командной строке UNIX?
решение1
Если ваша ls
поддержка --block-size
, например GNU coreutils, ls
делает:
ls -s --block-size=1048576 filename | cut -d' ' -f1
решение2
du -h file
ИЛИ
ls -lh file
РЕДАКТИРОВАТЬ
этот ответ неверен, поскольку он может сообщать размер также в Гб/Кб, в зависимости от размера файла.Пожалуйста, удалите положительные голоса.
решение3
Я обычно использую «du -k myfile» для получения килобайт и визуально отбрасываю последние три цифры, но мне просто нужен приблизительный размер.
Оказывается, у du часто (всегда?) есть опция -m для MB.
Имейте в виду, что размер файла, скорее всего, немного отличается от объема используемого дискового пространства, поскольку распределение места на диске происходит блоками, а не байтами.
Если вы ищете «толстые» файлы из-за нехватки места на диске, это был бы более информативный вопрос, поскольку решения были бы более разнообразными.
решение4
stat
может это сделать.
$ ls -l | grep myfile
-rw------- 1 rory rory 3120 2009-07-02 16:58 myfile
$ stat -c '%s' myfile
3120
которые выдают его вам в байтах.
Для подсчета мегабайт можно использовать арифметику bash:
$ echo $(( $( stat -c '%s' myfile ) / 1024 / 1024 ))
0
(но в этом случае округляет в меньшую сторону)