Obtenha o espaço livre disponível no diretório atual no Bash

20

Eu conheço df -h e pwd , mas parece um pouco complexo para a parte correspondente da regex. Alguma idéia?

    
por Cheng 18.01.2011 / 03:12

3 respostas

35

A saída pode ser um pouco mais fácil de analisar usando a opção -P , que garantirá que:

  1. The information about each file system is always printed on exactly one line; a mount device is never put on a line by itself. This means that if the mount device name is more than 20 characters long (e.g., for some network mounts), the columns are misaligned.

Isso facilita muito a obtenção do espaço livre disponível:

$ df -Ph . | tail -1 | awk '{print $4}'

( -h usa megabytes, gigabytes e assim por diante. Se o seu sistema não tiver, use -k apenas para kilobytes.)

Se passarmos df um caminho, ele só retornará 2 linhas: uma linha de cabeçalho e, em seguida, os dados sobre o sistema de arquivos que contém o caminho. Podemos usar a cauda para pegar apenas a segunda linha. Sabemos que o espaço disponível está na quarta coluna, então pegamos isso com awk . Tudo isso poderia ser feito com awk :

$ df -Ph . | awk 'NR==2 {print $4}'

ou muitos outros conjuntos de filtros .

    
por 18.01.2011 / 04:30
9

Que tal fazer df -h . . Isso lhe dará o espaço livre disponível da partição em que seu diretório de trabalho atual está.

Um pequeno exemplo:

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /
    
por 18.01.2011 / 08:34
3

Em bytes:

df --output=avail -B 1 "$PWD" | tail -n 1

legível para humanos:

df --output=avail -h "$PWD" | tail -n 1

ou

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"

ou

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
    
por 13.09.2017 / 07:57

Tags