Я новый пользователь сценариев оболочки 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 '{print $1}'
Примеры возможных выводов данных:
5253
или присвоить этот размер переменной bash:
myfilesize=$(wc -c "/etc/passwd" | awk '{print $1}') 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:
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 = ${mfs}"
Примеры возможных выводов данных указанных выше команд:
Найдите пример команды
Синтаксис выглядит следующим образом:
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 "${fileName} size is ${mysize} bytes."
Перевод: Анна Давыдова
Источник: cyberciti.biz
Это интересно: