Como extrair o tamanho do arquivo com du

Como extrair o tamanho do arquivo com du

Estou usando dupara obter o tamanho do arquivo de resultados em um script de empacotador:

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

Gostaria de atribuir apenas a 51Mparte a uma variável, para poder imprimir:

Archive size: 51M

Como eu posso fazer isso?

Responder1

Você pode fazer assim:

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

Detalhes

awkanalisará a saída dividindo-a em colunas. Você deseja apenas os resultados da coluna 1. O código $( .. ) executará um comando e retornará seus resultados.

Responder2

Ou use o statprograma, se estiver disponível (geralmente no Linux por padrão). Nenhuma conversão K/M/G legível por humanos, mas também não requer mais nada para obter apenas o número/tem boas opções de formatação:

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

Responder3

Awk é um martelo maior do que você precisa, use uma faca e corte,

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

informação relacionada