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

48

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

eu tentei

du -h | sort -V -k 1 

mas parece não funcionar.

user46976
fonte
Você pode esclarecer se também espera que os tamanhos dos subdiretórios apareçam na saída e também se está procurando o tamanho aparente dos arquivos ou o tamanho real que eles usam no disco?
Jlliagre

Respostas:

53

ls(1) /sort:

-S     sort by file size
Hello71
fonte
1
-Snão é mais um argumento de classificação válido, pelo menos no ubuntu. A resposta abaixo da @alex funcionou para mim. O link da resposta é superuser.com/a/990437/528836 .
Prasanna #
33
$ 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
kev
fonte
16

Se você possui a sortversão apropriada, pode simplesmente usar:

du -h | sort -rh

o meu é

$ sort --version
sort (GNU coreutils) 8.12
ztank1013
fonte
4

ls -Snão era uma opção no sistema operacional para mim. O seguinte funcionou: A
ls -l | sort -k 5nr
"chave" era especificar a coluna a ser classificada (obtenha, a "chave"). Acima, eu estou especificando a classificação do-k 5nr significado na 5a coluna, que é o tamanho (5) avaliado como um número (n) em ordem decrescente (n)

Documentação de classificação de referência para obter mais informações

Alex
fonte
4

du -ha | sort -h

du : estimar o uso do disco do arquivo.

-h : for human
-a : all files

sort : classifica linhas de texto.

-h : for human

man du; man sortpara mais. Funciona para mim no ubuntu v15.

Andrew_1510
fonte
1

Eu fiz isso funcionar para mim:

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

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

ls -lS
Aaron
fonte
0

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

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