Como extrair o tamanho do arquivo com du

5

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 parte 51M a uma variável, para poder imprimir:

Archive size: 51M

Como posso fazer isso?

    
por Benjamin 06.10.2013 / 18:42

3 respostas

6

Você pode fazer assim:

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

Detalhes

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

    
por 06.10.2013 / 18:44
4

Ou use o programa stat , 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
    
por 06.10.2013 / 23:26
3

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

variable=$(du -smh archive.zip | cut -f1 )
    
por 09.10.2013 / 08:13