Da sua pasta:
find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse
Você pode definir a profundidade com que pode procurar arquivos com o parâmetro -maxdepth
ou sem que seja recursivo.
Como mostrar uma lista de arquivos de uma raiz de diretório ordenada em ordem descendente de tamanho de arquivo a partir da linha de comando?
Da sua pasta:
find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse
Você pode definir a profundidade com que pode procurar arquivos com o parâmetro -maxdepth
ou sem que seja recursivo.
Se você quiser listar tudo no diretório de forma recursiva, use find
ou du
com sort
:
find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh
O primeiro mostrará apenas arquivos e tamanho em bytes. O último mostrará os tamanhos de arquivo e de diretório cumulativo, em formato legível por humanos (usando KB, MB, etc.). sort
, consequentemente, usa o numérico para o primeiro ( -n
) e legível para o último ( -h
).
Com mais complexidade, a melhor opção seria:
find /some/path -type f -print0 | du --files0-from=- -0h | sort -rzh | tr 'find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh
' '\n'
du
pode ler uma lista delimitada por NUL de arquivos da entrada, e find
pode imprimir nomes de arquivos delimitados por NUL usando -print0
. sort
pode, então, pegar a lista de tamanhos e nomes de arquivos delimitados pelo NUL, classificá-los e, finalmente, substituir NULs por novas linhas para exibição conveniente.
Como nomes de arquivos e caminhos podem conter qualquer coisa, exceto o caractere ASCII NUL, o uso de linhas delimitadas por NUL irá processá-los da maneira mais segura.
Você também pode obter find
para imprimir o tamanho como visto no primeiro comando, mas com -printf '%s %p
para continuar usando linhas delimitadas por NUL e pular usando %code% como intermediário. du
'
Como @Terrance disse, ls -lS
classifica os arquivos em ordem decrescente. Para todos os arquivos, ls -lSa
funciona.
É suficiente usar du
e sort
du --max-depth 1 * | sort -n -k1
Exemplo da saída,
$ du --max-depth 1 * | sort -n -k1
4 bin/CS-1400
4 bin/csrc
4 bin/DIR@YOLO
4 bin/EET2350
4 bin/HW6
4 RS232Functions.c
4 RS232Functions.c~
4 Untitled Folder
8 1204686.docx_en-US_zh-CN.docx
8 bin/shell
16 MSUDenver_50th_Formal.png
20 bb0239ba-1718-4778-b19a-3826f36a95cd.png
20 mainLogo.png
24 bin/NAME WITH SPACES
32 bin/ala
32 bin/Online_book
60 bin/HORTON
72 bin/JAVA-OTHER
Este comando irá ordenar por tamanho em kb
du -sk * | sort -n
Você pode reverter isso com:
du -sk * | sort -rn
Tags command-line