Как извлечь размер файла с помощью du

Как извлечь размер файла с помощью du

Я использую duдля получения размера файла результирующего архива в скрипте упаковщика:

> du -smh archive.zip
51M    archive.zip

Я хотел бы присвоить 51Mпеременной только эту часть, чтобы можно было распечатать:

Archive size: 51M

Как мне это сделать?

решение1

Сделать это можно так:

$ variable=$(du -smh archive.zip | awk '{print $1}')

Подробности

awkпроанализирует вывод, разбив его на столбцы. Вам нужны только результаты из столбца № 1. Код $( .. ) выполнит команду и вернет ее результаты.

решение2

Или используйте statпрограмму, если она доступна (обычно по умолчанию в Linux). Нет понятного человеку преобразования K/M/G, но и не требуется ничего больше, чтобы получить только число / есть удобные параметры форматирования:

sauer@humpy:~$ stat -c "%s" /etc/passwd
2302
sauer@humpy:~$ stat -c "%n size: %s bytes" /etc/passwd /etc/shadow
/etc/passwd size: 2302 bytes
/etc/shadow size: 1389 bytes

решение3

Awk — молоток большего размера, чем вам нужно, используйте нож и режьте,

variable=$(du -smh archive.zip | cut -f1 )

Связанный контент