Как проверить размер файла в сценариях оболочки Linux / Unix bash
Я новый пользователь сценариев оболочки bash. Как узнать размер файла в моем сценарии оболочки bash и сохранить этот размер файла в переменной оболочки bash?
Вы не можете получить размер файла в сценарии bash, используя внутреннюю или встроенную команду. Вам понадобятся несколько команд, включая stat. Командная строка stat отображает информацию о файле, включая его размер. Другой вариант — использовать команду wc, которая может подсчитывать количество байтов в каждом заданном файле. Давайте посмотрим, как использовать эти две команды для проверки размера файла в Linux или Unix-подобной системе.
Как проверить размер файла в unix с помощью команды wc
Команда wc показывает количество строк, слов и байтов, содержащихся в файле. Для получения размера файла, используйте синтаксис, который выглядит следующим образом:
wc -c /path/to/file wc -c /etc/passwd
Примеры возможных выводов данных:
5253 /etc/passwd
Вы может с легкостью извлечь первое поле, используя или команду cut или команду awk:
wc -c /etc/passwd | awk ''
Примеры возможных выводов данных:
5253
или присвоить этот размер переменной bash:
myfilesize=$(wc -c "/etc/passwd" | awk '') printf "%d\n" $myfilesize echo "$myfilesize"
Как узнать размер файла в сценарии bash, используя команду stat
Команда stat показывает информацию о файле. Используйте следующий синтаксис для того, чтобы узнать размер файла на GNU/Linux с помощью команды stat:
stat -c %s "/etc/passwd"
stat --format=%s "/etc/passwd"
Чтобы присвоить этот размер переменной bash:
myfilesize=$(stat --format=%s "/etc/passwd") echo "$myfilesize" ## or ## myFileSizeCheck=$(stat -c %s "/etc/resolv.conf") printf "My file size = %d\n" $myFileSizeCheck
Используйте следующий синтаксис для того, чтобы узнать размер файла на BSD/MacOS с помощью команды
stat -f %z "/etc/passwd"
Обратите внимание, что если файл является символьной ссылкой, вы получите размер этой ссылки только с помощью команды stat.
Примеры команды du
Синтаксис выглядит следующим образом
du --apparent-size --block-size=1 "/etc/passwd" fileName="/etc/hosts" mfs=$(du --apparent-size --block-size=1 "$fileName" | awk '< print $1>') echo "$fileName size = $"
Примеры возможных выводов данных указанных выше команд:

Найдите пример команды
Синтаксис выглядит следующим образом:
find "/etc/passwd" -printf "%s" find "/etc/passwd" -printf "%s\n" fileName="/etc/hosts" mysize=$(find "$fileName" -printf "%s") printf "File %s size = %d\n" $fileName $mysize echo "$ size is $ bytes."
- Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Linux (LAMP)
- Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10
- Установка Adobe Photoshop CS6 на Linux (очень простой способ)
Как в bash узнать размер файла
Очень часто приходится сравнивать размеры файлов, будь то бэкапы, документы или любые другие файлы. Мне например очень пригодилось при работе с бэкапами, так как иногда архиватор создает бэкапы с нулевым размером (32 байта). Чтобы избежать таких «косяков» в своих скриптах я использую команду:
filesize=$(stat -c%s «$file»);
В ответ вы получите размер файла в байтах. Это очень удобно при работе с маленькими файлами, либо когда разница в файле очень мала. Дальше используйте по-своему усмотрению. например, так:
#если бэкап меньше 1 мбайта, то подозрительна чёта 8(
filesize=$(stat -c%s «$file»);
if [ «$filesize» -lt «1000000» ];
then
echo «WARNING! File size of $file is small — $filesize byte» >> $backupdir/$logfile;
fi
Затем весь лог-файл отправляется на почту. Об этом написано в посте Как отправить содержимое файла на почту в bash
Отблагдарить автора статьи также можно переводом, +100 вам в карму!
Как узнать размер файлов и папок в Linux?

Чтобы посмотреть размер файлов в папке Linux (а так же размер самих папок) в удобочитаемом формате (ГБ, КБ, МБ или байты) достаточно открыть консоль или подключиться к серверу по SSH и ввести несколько простых команд, о которые рассмотрим ниже.
Содержание статьи
- Вывести размер файлов linux командой «ls»
- Посмотреть размер файлов и папок командой «du»
- Узнать размер файла linux командой «stat»
Вывести размер файлов linux командой «ls»
Чтобы вывести размер файлов, которые находятся в текущем каталоге введите команду
ls -lh
Параметр -l выводит информацию в виде списка строк, а добавление опции h выводит размер файлов в удобочитаемом формате.
В четвертой колонке будет указан размер.
Чтобы узнать размер определенного файла, через пробел нужно ввести его имя. Например, чтобы узнать размер файла filename.txt:
ls -lh filename.txt
Минус этой команды в том, что она не вычисляет размер папок (директорий). На помощь приходит команда du.
Посмотреть размер файлов и папок командой «du»
Используйте команду du чтобы узнать общий размер открытой директории. Это самый простой и популярный способ. Пример:
du -hs
Параметр -h указывает на то, чтобы вывод был в удобочитаемом формате. А параметр «s» — чтобы размер файлов в папке linux суммировался.
Чтобы посмотреть информацию по занимаемому месту на диске с разбивкой по файлам и папкам, введите команду:
du -hs *
Звездочка на конце обязательна! Команда найдет и покажет все размер всех файлов и директорий в текущем каталоге.
Узнать размер файла linux командой «stat»
Еще один способ, который позволяет получить размер файла Linux — команда stat. Команду запускайте так:
stat filename.txt
Где filename.txt — название интересующего файла. По-умолчанию, размер будет выведен в байтах.
Все эти команды отлично работают как в терминалах Linux: Ubuntu, Debian, CentOS, так и в других Unix и BSD-like системах: MacOS, FreeBSD и т.д.
Используйте любую на ваше усмотрение. Все очень просто.
Посчитать размер файла в байтах на shell
Основная задача — узнать размер файла. Изначально в проекте пользовался du -b file.txt. Проект переехал на BusyBox. Теперь у команды du нет опции -b. Каким образом еще можно посчитать размер файла в байтах.
Отслеживать
задан 14 янв 2016 в 7:22
399 2 2 серебряных знака 16 16 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для получения подробной информации о файлах надо использовать команду stat :
stat имя-файла -c %s
Для получения информации в том же виде, как выдает du -b т.е. с именем файла после размера, можно использовать формат -c «%s %n»
Отслеживать
ответ дан 14 янв 2016 в 7:28
44.1k 3 3 золотых знака 35 35 серебряных знаков 66 66 бронзовых знаков
- linux
- shell
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.