Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Linux. Узнать размер файла в байтах и сохранить его в переменную в скрипте.

Размер файла в байтах


Для дальнейшего использования удобнее всего получить размер файла с помощью утилиты du. Она входит в пакет coreutils, так что есть практически везде:

du -sb ./test.txt

где:
-sb - показывать размер в байтах
./test.txt - путь к файлу.

Вывод:

10 ./test.txt

Запись значения в переменную


Вывод команды du скармливаем awk и пишем результат в переменную:

CURSIZE=`du -sb path/file|awk '{print $1}'`

Пример использования


Можно проверить файл на минимальный размер, например для того, чтобы узнать, не произошло ли ошибок при скачивании:

MINSIZE="10" #minimal file size (in bytes)
    
#check file size
CURSIZE=`du -sb "path/file"|awk '{print $1}'`
if [ "$CURSIZE" -le "MINSIZE" ]; then
	echo "File is small. Download error?"
fi


Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/11/02/linux-uznat-razmer-fajla-v-bajtah-i-sohranit-ego-v-peremennuyu-v-skripte/

Tags: ,
Comments

ну вобще посмотрел бы `ls -l`, но для скрипта это не годно, если только sedом выдирать потом

Я хотел сначала ls -sh ./file сделать, но оно само единицы выбирает, а надо байты.

ls -l тоже можно, просто надо другую колонку awk'ой печатать:

ls -l ./file | awk '{print $5}'

Есть еще stat -c "%s" (правда, не posix).

ну в coreutils оно есть, и кстати да - самый простой способ, не надо вывод awk скармливать.

кстати, ребят, если вдруг не знали - ncdu - охуенная тема!

Писал про эту утилитку.