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.


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:



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

16

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

du -h | sort -rh

o meu é

$ sort --version
sort (GNU coreutils) 8.12

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


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.


1

Eu fiz isso funcionar para mim:

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

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

ls -lS

0

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

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.