Como você classifica du -sh /dir/*
por tamanho? Li um site que dizia uso, | sort -n
mas obviamente isso não está certo. Aqui está um exemplo que está errado.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
xenoterracida
fonte
fonte
sort -h
funcionou para mim no Ubuntu 16.04 LTS em agosto de 2017. Primeiro, localizo minha unidade montada porcd /mnt
(montada por UUID no fstab). Então eu façodu >~/dumnt.out
,sort -h ~/dumnt.out >~/dumntsort.out
então eu posso fazer `tail ~ / dumntsort.out para ver os maiores porcos espaciais.Respostas:
Se você possui GNU coreutils (comum na maioria das distribuições Linux), pode usar
A
-h
opção informasort
que a entrada é o formato legível por humanos (número com unidade; com base em 1024, para que 1023 seja considerado menor que 1K, o que coincide com o que o GNUdu -h
faz).Este recurso foi adicionado ao GNU Core Utilities 7.5 em agosto de 2009 .
fonte
-r
à classificação, se você quiser os maiores no topocoreutils
viabrew
e adicionar a pasta bin ao seuPATH
em sua rc arquivo, e-h
deve estar disponível.tail
comando para ver os porcos.Tente usar o sinalizador -k para contar blocos de 1K em vez de usar legível por humanos. Então, você tem uma unidade comum e pode facilmente fazer uma classificação numérica.
Você não precisa explicitamente de unidades humanas, mas, se precisar, existem várias maneiras de fazê-lo. Muitos parecem usar a técnica de bloqueio de 1K acima e, em seguida, fazem uma segunda chamada para du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Se você deseja ver as unidades de KB adicionadas, use:
fonte
Se você não possui uma versão recente do GNU coreutils , pode ligar
du
sem-h
obter uma saída classificável e produzir uma saída amigável ao ser humano com um pouco de pós-processamento. Isso tem a vantagem de funcionar, mesmo que sua versãodu
não tenha o-h
sinalizador.Se você deseja sufixos SI (ou seja, múltiplos de 1000 em vez de 1024), altere 1024 para 1000 no
while
corpo do loop. (Observe que 1000 na condição é pretendida, para que você obtenha, por exemplo, em1M
vez de1000k
.)Se você
du
tiver a opção de exibir tamanhos em bytes (por exemplo,-b
ou-B 1
- observe que isso pode ter o efeito colateral de contar os tamanhos de arquivo reais em vez de usar o disco), adicione um espaço ao início des
(ou sejas=" kMGTEPYZ";
) ou adicioneif (x<1000) {return x} else {x/=1024}
no início de ahuman
funçãoA exibição de um dígito decimal para números no intervalo de 1 a 10 é deixada como exercício para o leitor.
fonte
Se você não possui,
sort -h
pode fazer o seguinte:Isso obtém a lista du, separa o sufixo e classifica usando isso. Como não há sufixo para <1K, o primeiro sed adiciona um B (para byte). O segundo sed adiciona um delimitador entre o dígito e o sufixo. O terceiro sed converte G em Z para que seja maior que M; se você tiver arquivos terabytes, precisará converter G em Y e T em Z. Finalmente, classificamos pelas duas colunas e substituímos o sufixo G.
fonte
No OS X, você pode instalar os coreutils necessários via Homebrew :
Com isso você terá
gsort
, que inclui o-h
parâmetro da linha de comando.fonte
Este pequeno script Perl faz o truque. Salve-o como
duh
(ou o que você quiser) e chame-o comduh /dir/*
fonte
Como o Mac OS X não tem a
-h
opçãosort
, tentei e aprendised
eawk
para uma primeira tentativa:é uma fila longa. Expandido, é:
Eu tentei no Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 com
awk
sendo o padrãoawk
(que énawk
, porque ambosawk
enawk
ponto a/usr/bin/mawk
) ou ficar de boca aberta, e todos eles trabalharam.Aqui está uma amostra da saída em um Mac:
em vez de
du -sk *
, vi na resposta de @ Stefan onde o total geral também é exibido e sem passar por nenhum ponto de montagem do sistema de arquivos usandodu -skcx *
fonte
Aqui está o que eu uso no Ubuntu 10.04, CentOS 5.5, FreeBSD e Mac OS X.
Peguei emprestada a idéia de www.geekology.co.za/ e earthinfo.org , além dos patos infames de "Linux Server Hacks" de O'Reilly. Ainda estou adaptando-o às minhas necessidades. Ainda está em andamento (como eu estava trabalhando no trem esta manhã.):
Aqui está a saída:
fonte
du -cks -x *
? (com o asterisco)ducks
, e, em seguida,chmod a+x ducks
e depois usar./ducks
para executá-lo? Então, vejo apenas o uso total do disco, no Mac OS X e no Ubuntu 2014-10. Eu também tentei colocar aducks() { ...}
definição em.bashrc
e, em seguida, usarducks
para executá-lo, ea mesma coisa no Mac OS X, ver apenas o total geralEnlouqueça com este script -
fonte
Na ausência do GNU
sort -h
, isso deve funcionar na maioria dos ambientes UNIX:fonte
Este lida com nomes de arquivos com espaço em branco ou apóstrofos e funciona em sistemas que não suportam
xargs -d
ousort -h
:o que resulta em:
fonte
Isso classificará a saída em ordem decrescente de tamanho:
Isso classificará a saída em ordem crescente de tamanho:
PS: pode ser usado para classificar por qualquer coluna, mas os valores da coluna devem estar no mesmo formato
fonte
sort -k1rn
é equivalentesort -rn
e apenas classifica numericamente com base na sequência inicial de dígitos decimais em cada linha. Ele não entende ponto flutuante, e ele não entende ask
,M
,G
... sufixos. 10.1k seria considerado maior do que 1,23gTestado no Solaris!
Isso produzirá todos os tamanhos de diretório de forma recursiva, na parte inferior será o maior diretório em Gigabytes e no menor, em Kilobytes.
fonte
O maior está na parte inferior:
fonte
Comando:
du -ah . | sort -k1 -h | tail -n 50
Explicação:
du -ah .
sort -k1 -h | tail -n 50
fonte
Para classificar por tamanho em MB
fonte
du -h
(saída legível por humanos) classificada numericamente. Você não está dando uma resposta para isso. Você também pode vincular sua conta do UNIX-SE às outras contas que você possui nos outros sites do SE.Esse script é ainda mais fácil:
fonte
para OSX
fonte
-k
apenas o cancelamento-h
e, em caso afirmativo, como isso fornece a saída legível por humanos solicitada pelo OP.