5/5 - (9 голосов)

Информация для новичка в командной оболочке 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}"

stat-find-du-wc-command-outputs

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."

Услуги администрирования серверов и поддержки сайтов.