Назад | Перейти на главную страницу

Найти размер файла в МБ

Как узнать размер файла в МБ в командной строке UNIX?

Если ваш ls поддерживает --block-size такие как GNU coreutils ls делает:

ls -s --block-size=1048576 filename | cut -d' ' -f1

du -h file

ИЛИ

ls -lh file

РЕДАКТИРОВАТЬ

этот ответ неверен, поскольку он может сообщать размер также в Гб / Кб, в зависимости от размера файла. Удалите положительные голоса.

Я обычно использую 'du -k myfile', чтобы получить килобайты и визуально опустить последние три цифры, но я просто ищу приблизительный размер.

Оказывается, du часто (всегда?) Имеет параметр -m для MB.

Имейте в виду, что размер файла, вероятно, немного отличается от объема используемого дискового пространства, поскольку распределение на диске происходит блоками, а не байтами.

Если вы ищете «толстые» файлы из-за нехватки места на диске, это будет более поучительный вопрос, поскольку решения будут более разнообразными.

использование опции -lh предоставит вам размеры в удобочитаемой форме, например, если ваш файл имеет размер 1025 M, он будет выводить 1 ГБ, в противном случае вы можете использовать ls --block-size = 1024K -s, он даст размер в ближайшем целом числе в МБ .
Если вам нужны точные значения (а не округленные), вы можете использовать awk:

ls -l | awk '/d|-/{printf("%.3f %s\n",$5/(1024*1024),$9)}'

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

(но в данном случае округляет его в меньшую сторону)

Я нашел лайнер AWK 1, и в нем была ошибка, но я ее исправил. Я также добавил в PetaBytes после TeraBytes.

FILE_SIZE=234234 # FILESIZE IN BYTES
FILE_SIZE=$(echo "${FILE_SIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')

Учитывая стат не в каждой системе, вы почти всегда можете использовать решение AWK. Пример; у Raspberry Pi нет стат но у него есть awk.

Вы можете использовать крошечный скрипт Python:

$ cat ./size_in_mb.py
#!/usr/local/bin/python
import os
import sys
print os.path.getsize(sys.argv[1])/1048576

$ ls -l test.tgz
-rw-r--r--  1 root root 258330336 Jul  7 00:04 test.tgz

$ ./size_in_mb.py test.tgz
246

Я видел это в другой ветке, и мне понравились результаты. Под AIX я использовал

ls -l [filename] | awk '{$5=sprintf("%.3f GB", $5/1024^3)} 1'

Производит количество ГБ с 3 десятичными знаками

Пример вывода

ls -l /tmp/myfile:

-rw-rw-rw- 1 owner group 0.530 GB Jul 8 10:33 /tmp/myfile

Вы можете увеличить десятичный счетчик, если размер файла меньше 1 МБ. Приведенный выше пример с использованием% .9f вместо этого даст:

0.530388314  GB

Попробуйте этот пример:

size=$(du file |  awk '{print $1/1000}')

echo "the size is ${size} MB"