Obtenha apenas o tamanho de um sistema de arquivos montado

Obtenha apenas o tamanho de um sistema de arquivos montado

Quero obter apenas o tamanho total de um sistema de arquivos montado. Mas o problema é que só sei sobre o ponto de montagem. Então, pensei em usar o dfcomando.

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

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

O resultado que obtive foi mais ou menos assim:

/mnt/xyz             4339044

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

Responder1

Você pode fazer isso sem grep:

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

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

Ou melhor ainda, corte o alvo, pois você não o está gerando, e ele se tornará:

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

Quando eu era iniciante, também consegui contornar cutas 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" "

Responder2

Existe também o findmntcomando, que pode imprimir o número de bytes ou um número "humano" (potências de 1024 com abreviações não-iso, infelizmente):

$ findmnt -no size /mnt/xyz
 9.7G
$ findmnt -bno size /mnt/xyz
10434699264

informação relacionada