¿Cómo puedo ordenar todos los archivos por tamaño en un directorio?


48

¿Cómo puedo mostrar los archivos en un directorio Unix ordenados por su tamaño legible por humanos, yendo de mayor a menor?

Lo intenté

du -h | sort -V -k 1 

pero no parece funcionar.


¿Puede aclarar si espera que los tamaños del subdirectorio aparezcan también en la salida, y también si está buscando el tamaño aparente de los archivos o el tamaño real que usan en el disco?
jlliagre

Respuestas:



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

Si tiene la sortversión adecuada , simplemente puede usar:

du -h | sort -rh

el mio es

$ sort --version
sort (GNU coreutils) 8.12

4

ls -SNo era una opción en el sistema operativo para mí. Lo siguiente funcionó:
ls -l | sort -k 5nr
"la clave" era especificar la columna para ordenar (obtener, la "clave"). Arriba estoy especificando la clasificación de-k 5nr significado en la quinta columna, que es el tamaño (5) evaluado como un número (n) en orden descendente (n)

Referencia de documentación tipo para más información


4

du -ha | sort -h

du : estima el uso del disco de archivos.

-h : for human
-a : all files

sort : ordena líneas de texto.

-h : for human

man du; man sortpara más. Funciona para mí en ubuntu v15.


1

Tengo esto para trabajar para mí:

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

Lo cual (acabo de descubrir) es lo mismo que:

ls -lS

0

A diferencia ls -S, esto manejará adecuadamente los archivos dispersos:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.