Obtenha apenas o tamanho de um sistema de arquivos montado

3

Eu quero obter apenas o tamanho total de um sistema de arquivos montado. Mas o problema é que eu só sei sobre o ponto de montagem. Então, pensei em usar o comando df .

Para obter o tamanho desse sistema de arquivos montado, executei o seguinte comando:

df --output=target,size | grep -w /mnt/xyz

O resultado que obtive foi algo assim:

/mnt/xyz             4339044

Eu sei como usar cut , mas não adiantou aqui, pois o espaço entre a string e os inteiros é desconhecido para mim. Existe uma maneira de imprimir esse tamanho no terminal?

    
por Abhimanyu Saharan 24.06.2016 / 21:34

2 respostas

5

Você pode fazer isso sem o grep :

df --output=target,size /mnt/xyz | awk ' NR==2 { print $2 } '

df aceita como argumento o ponto de montagem; você pode dizer a awk para imprimir apenas a segunda linha (NR == 2) e o segundo argumento, $ 2.

Ou melhor ainda, corte o alvo como você não está produzindo, e se torna:

df --output=size /mnt/xyz | awk ' NR==2 '

Quando eu era um iniciante, eu também consegui contornar cut limitações usando tr -s " " (squeeze) para cortar espaços redundantes como em:

df --output=target,size /mnt/xyz | tail -1 | tr -s " " | cut -f2 -d" "
    
por 24.06.2016 / 21:42
3

Existe também o comando findmnt , que pode imprimir o número de bytes ou um número "humano" (potências de 1024 com abreviaturas não-iso, infelizmente):

$ findmnt -no size /mnt/xyz
 9.7G
$ findmnt -bno size /mnt/xyz
10434699264
    
por 24.06.2016 / 21:59