web-dev-qa-db-pt.com

Como posso classificar todos os arquivos por tamanho em um diretório?

Como posso exibir os arquivos em um diretório unix classificados por seu tamanho legível, indo do maior para o menor?

Eu tentei

du -h | sort -V -k 1 

mas isso não parece funcionar.

46
user46976

ls(1)/sort:

-S     sort by file size
51
Hello71
$ ls -lhS

-l     use a long listing format
-h     with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-S     sort by file size
32
kev

Se você tiver a versão sort apropriada, você pode simplesmente usar:

du -h | sort -rh

o meu é

$ sort --version
sort (GNU coreutils) 8.12
14
ztank1013

du -ha | sort -h

du: estima o uso do disco de arquivos.

-h : for human
-a : all files

sort: classifica linhas de texto.

-h : for human

man du; man sort para mais. Isso funciona para mim no ubuntu v15.

4
Andrew_1510

ls -S não era uma opção no sistema operacional para mim. O seguinte trabalhou:
ls -l | sort -k 5nr
Eles "chave" foi para especificar a coluna para classificar (obtê-lo, a "chave"). Acima estou especificando -k 5nr significado classificar na quinta coluna que é tamanho (5) avaliada como um número (n) em ordem decrescente (n)

Referência classificar documentação para mais informações

3
Alex

Eu tenho isso para trabalhar para mim:

ls -l | sort -g -k 5 -r

Que (eu acabei de descobrir) é o mesmo que:

ls -lS
1
Aaron

Ao contrário de ls -S, isso manipulará corretamente arquivos esparsos:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
0
jlliagre