it-swarm-es.com

Mostrar tamaños de archivo en orden ordenado

¿Cómo mostrar una lista de archivos de algún directorio raíz ordenado en orden descendente de tamaño de archivo desde la línea de comandos?

7
Andriy Kryvtsun

Si desea enumerar todo en el directorio de forma recursiva, use find o du con sort:

find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh

El primero mostrará solo archivos y el tamaño en bytes. Este último mostrará el tamaño de los archivos y del directorio acumulativo, en formato legible por humanos (usando KB, MB, etc.). sort en consecuencia usa numérico para el primero (-n) y legible por humanos para el último (-h).


Con más complejidad, la mejor opción sería:

find /some/path -type f -print0 | du --files0-from=- -0h | sort -rzh | tr '\0' '\n'

du puede leer una lista de archivos delimitados por NUL desde la entrada, y find puede imprimir nombres de archivo delimitados por NUL usando -print0. sort puede tomar la lista delimitada por NUL de tamaños y nombres de archivos y ordenarlos, y finalmente reemplazar los NUL por nuevas líneas para una visualización conveniente.

Dado que los nombres de archivo y las rutas pueden contener cualquier cosa excepto el carácter ASCII NUL, el uso de líneas delimitadas por NUL los procesará es la forma más segura.

También puede obtener find para imprimir el tamaño como se ve en el primer comando, pero con -printf '%s %p\0' para seguir utilizando líneas delimitadas por NUL y omitir el uso de du como intermediario.

3
muru

De tu carpeta:

find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse

Puede establecer qué tan profundo puede buscar archivos con el parámetro -maxdepth o sin que sea recursivo.

3
EdiD

Como dijo @Terrance, ls -lS clasifica los archivos en orden descendente. Para todos los archivos, ls -lSa funciona.

1
NoOneIsHere

Este comando se ordenará por tamaño en kb

du -sk * | sort -n

Puedes revertirlo con:

du -sk * | sort -rn
0
Cleber Reizen

Es suficiente usar du y sort

du --max-depth 1 * | sort -n -k1

Ejemplo de la salida,

$ du --max-depth 1 * | sort -n -k1
4   bin/CS-1400
4   bin/csrc
4   bin/[email protected]
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
0