Информация для новичка в командной оболочке bash. Как узнать размер файла через bash скрипт и сохранить этот размер в переменную оболочки Bash?
Не все команды для подсчета размера файла подойдут для использования в скрипте. Команда stat отображает информацию о файле, включая его размер. Другой вариант заключается в использовании команды wc, которая может подсчитать количество байтов в каждом конкретном файле. Давайте посмотрим, как использовать эти две команды, чтобы проверить размер файла в Linux или Unix-подобной системе.
Как проверить размер файла в UNIX с помощью команды wc
Команда wc показывает количество строк, слов и байтов, содержащихся в файле. Синтаксис выглядит следующим образом, чтобы получить размер файла:
wc -c /path/to/file wc -c /etc/passwd
Пример результата:
5353 /etc/passwd
Вы можете легко извлечь первое поле либо с помощью команды cut или AWK:
wc -c /etc/passwd | awk '{print $1}'
Пример результата:
5353
ИЛИ присвоить этот размер переменной Баш:
myfilesize=$(wc -c "/etc/passwd" | awk '{print $1}') printf "%d\n" $myfilesize echo "$myfilesize"
Как получить размер файла в Баш скрипт с помощью команды stat
Команда stat показывает информацию о файле. Синтаксис выглядит следующим образом, чтобы получить размер файла на GNU / Linux:
stat -c %s "/etc/passwd"
или
stat --format=%s "/etc/passwd"
Чтобы назначить этот размер переменной Баш:
myfilesize=$(stat --format=%s "/etc/passwd") echo "$myfilesize" ## or ## myFileSizeCheck=$(stat -c %s "/etc/resolv.conf") printf "Размер файла = %d\n" $myFileSizeCheck
Синтаксис выглядит следующим образом, чтобы получить размер файла на BSD / MacOS:
stat -f %z "/etc/passwd"
Обратите внимание, что если файл символьная вы получите размер этой ссылки только с помощью команды стат.
Пример команды 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 пример команды
Синтаксис:
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} размер ${mysize} bytes."