Obtém o tamanho da pasta no Linux

1

Tenho muitas pastas pessoais em / home / e gostaria de obter o tamanho total de cada pasta de usuários em uma lista fácil de ler.

ou seja

  1. / home / user1 100MB
  2. / home / user2 24MB
  3. / home / user3 54MB

etc.

Atualmente, usando algo semelhante a du -hc | grep total

    
por Michael Hampton 20.07.2009 / 20:47

4 respostas

1

IMO, uma mesclagem das respostas de Ernie e Depesz está mais próxima do que você pediu, exceto que deveria ser 'du -s / home / * / | sort -n '. 'du -h' não classifica corretamente com 'sort -n', porque não é mais um número, por exemplo 10G classifica antes de 10M

outra alternativa, se você quiser descobrir o espaço total em disco usado por cada usuário, independentemente de estar em seu diretório home ou não, é instalar os utilitários de quota, habilitar a contabilidade de cota no (s) sistema (s) de arquivos relevante (s), mas deixar cota de cada usuário em 0 (ilimitado). que lhe dirá o espaço em disco usado, bem como o número de arquivos / inodes usados.

você pode simplesmente executar "repquota -a" para obter um relatório como este:

*** Report for user quotas on device /dev/sda8
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
user1     --   67844       0       0           7748     0     0
user2     --   21908       0       0           1742     0     0
user3     --   27212       0       0            258     0     0
user4     --   25492       0       0            328     0     0
user5     --  575536       0       0           2972     0     0
user6     --   83944       0       0           1114     0     0
user7     --  501304       0       0           3418     0     0
user8     --  760068       0       0           5011     0     0
user9     -- 1445396       0       0           1932     0     0
...

O repquota também tem uma opção "-s" para a saída "legível por humanos", como du "-h". Não surpreendentemente, ele tem o mesmo problema de classificação que du -h, embora.

    
por 20.07.2009 / 23:36
6
du -hcs /home/*/ 

Ou, exatamente o que você quer:

for i in /home/*/; do 
    user=${i#/*/}
    space=$(du -hs "$i" | cut -f1)
    echo "${user%/} = $space" 
done
    
por 20.07.2009 / 20:51
0

O que você está tentando descobrir?

Se você deseja classificar por tamanho, tente o seguinte:

du -s /home/ |sort -n
    
por 20.07.2009 / 21:02
0

apenas execute isto:

du -sh /home/*

E você deveria ser feliz.

    
por 20.07.2009 / 21:30