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

38

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 parece que não funciona.

    
por user46976 16.12.2011 / 22:16

7 respostas

44

ls(1) /sort :

-S     sort by file size
    
por 16.12.2011 / 22:24
30
$ 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
    
por 17.12.2011 / 14:27
12

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

du -h | sort -rh

meu é

$ sort --version
sort (GNU coreutils) 8.12
    
por 16.12.2011 / 23:09
4

du -ha | sort -h

du : estimar o uso do disco de arquivos.

-h : for human
-a : all files

sort : classificar linhas de texto.

-h : for human

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

    
por 21.01.2016 / 10:56
2

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

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

    
por 22.10.2015 / 20:15
1

Eu tenho isso para trabalhar para mim:

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

Qual (acabei de descobrir) é o mesmo que:

ls -lS
    
por 16.12.2011 / 22:27
0

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

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
    
por 16.12.2011 / 22:38

Tags