Estou usando du
para obter o tamanho do arquivo de resultados em um script de empacotador:
> du -smh archive.zip
51M archive.zip
Gostaria de atribuir apenas a 51M
parte 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
awk
analisará 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 stat
programa, 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 )