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