Para listar os arquivos em qualquer lugar abaixo /tmp
, classificados por tamanho:
find /tmp -type f -exec du -k {} + | sort -k1n -k2
Para listar os arquivos e as árvores de diretório imediatamente abaixo /tmp
, classificados por tamanho:
du -k /tmp/..?* /tmp/.[!.]* /tmp* 2>/dev/null | sort -k1n -k2
Para listar todos os arquivos e árvores de diretórios em qualquer lugar abaixo /tmp
, classificados por tamanho:
du -ak /tmp | sort -k1n -k2
(Um exemplo para ilustrar a diferença entre os três comandos: se houver um arquivo /tmp/dir/file
, o primeiro comando lista /tmp/dir/file
, a segunda lista /tmp/dir
e a terceira lista os dois.)
Todos os comandos acima mostram tamanhos em kilobytes. Embora o GNU du possa produzir tamanhos “legíveis por humanos” (com multiplicadores k, M, G, etc.), classificá-los é outra questão. Coreutils GNU recentes o suficiente (≥7.4) podem fazer isso: basta substituir du -k
por du -h
e sort -k1n -k2
com sort -k1h -k2
. Caso contrário, eis um script bruto do awk para converter em tamanhos com sufixo (arredondamento para baixo); basta canalizar a sort
saída acima para ele.
awk -vFS='\t' -vOFS='\t' '{
if ($1) $1 = substr($1,1,(length($1)-1)%3+1)
substr("kMGTPEZY",(length($1)-1)/3+1,1);
print}'