¿Cómo se clasifica du -sh /dir/*
por tamaño? Leí un sitio que decía uso, | sort -n
pero obviamente eso no está bien. Aquí hay un ejemplo que está mal.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
xenoterracida
fuente
fuente
sort -h
funcionó para mí en Ubuntu 16.04 LTS en agosto de 2017. Primero encuentro mi unidad montada porcd /mnt
(montada por UUID en fstab). Luego lo hagodu >~/dumnt.out
ysort -h ~/dumnt.out >~/dumntsort.out
luego puedo hacer `tail ~ / dumntsort.out para ver los cerdos espaciales más grandes.Respuestas:
Si tiene coreutils de GNU (común en la mayoría de las distribuciones de Linux), puede usar
La
-h
opción indicasort
que la entrada es el formato legible para humanos (número con unidad; basado en 1024, de modo que 1023 se considera menor que 1K, lo que coincide con lo quedu -h
hace GNU ).Esta característica se agregó a GNU Core Utilities 7.5 en agosto de 2009 .
fuente
-r
para ordenar, si desea los más grandes en la parte superiorcoreutils
a travésbrew
y agregar la carpeta bin a laPATH
en su rc archivo y-h
debe estar disponible.tail
comando para ver a los cerdos.Intente usar el indicador -k para contar bloques de 1K en lugar de usar legibles para humanos. Entonces, tiene una unidad común y puede hacer fácilmente una ordenación numérica.
No necesitas explícitamente unidades humanas, pero si lo hiciste, entonces hay muchas maneras de hacerlo. Muchos parecen usar la técnica de bloqueo 1K anterior, y luego hacen una segunda llamada a du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Si desea ver las unidades KB agregadas, use:
fuente
Si no tiene una versión reciente de los coreutils de GNU , puede llamar
du
sin-h
obtener una salida ordenable y producir una salida amigable para los humanos con un poco de posprocesamiento. Esto tiene la ventaja de funcionar incluso si su versión dedu
no tiene la-h
bandera.Si desea sufijos SI (es decir, múltiplos de 1000 en lugar de 1024), cambie 1024 a 1000 en el
while
cuerpo del bucle. (Tenga en cuenta que se pretende 1000 en la condición, de modo que obtenga, por ejemplo, en1M
lugar de1000k
).Si
du
tiene una opción para mostrar tamaños en bytes (por ejemplo,-b
o-B 1
- tenga en cuenta que esto puede tener el efecto secundario de contar los tamaños de archivo reales en lugar del uso del disco), agregue un espacio al comienzo des
(es decirs=" kMGTEPYZ";
), o agregueif (x<1000) {return x} else {x/=1024}
al comienzo de Lahuman
función.Mostrar un dígito decimal para los números en el rango 1–10 se deja como ejercicio para el lector.
fuente
Si no
sort -h
tienes puedes hacer esto:Esto obtiene la lista du, separa el sufijo y se ordena usando eso. Como no hay sufijo para <1K, el primer sed agrega una B (por byte). El segundo sed agrega un delimitador entre el dígito y el sufijo. El tercer sed convierte G a Z para que sea más grande que M; Si tiene archivos de terabytes, tendrá que convertir G a Y y T a Z. Finalmente, ordenamos por las dos columnas, luego reemplazamos el sufijo G.
fuente
En OS X, puede instalar los coreutils necesarios a través de Homebrew :
Con esto tendrás
gsort
, que incluye el-h
parámetro de línea de comando.fuente
Este pequeño script de Perl hace el truco. Guárdalo como
duh
(o como quieras) y llámalo conduh /dir/*
fuente
Como Mac OS X no tiene la
-h
opciónsort
, lo intenté y aprendísed
yawk
para un primer intento:Es una larga cola. Ampliado, es:
Lo he probado en Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 con
awk
ser el valor por defectoawk
(que esnawk
, porque ambosawk
ynawk
el punto a/usr/bin/mawk
) o curiosear, y todos ellos trabajaba.Aquí hay una muestra de la salida en una Mac:
en lugar de
du -sk *
, vi en la respuesta de @ Stefan donde también se muestra el gran total, y sin atravesar ningún punto de montaje del sistema de archivos, usandodu -skcx *
fuente
Esto es lo que uso en Ubuntu 10.04, CentOS 5.5, FreeBSD y Mac OS X.
Me tomó la idea de www.geekology.co.za/ y earthinfo.org , así como los famosos patos de "Servidor Linux Hacks" de O'Reilly. Todavía lo estoy adaptando a mis necesidades. Esto todavía es un trabajo en progreso (como en, estaba trabajando en esto en el tren esta mañana):
Aquí está la salida:
fuente
du -cks -x *
? (con el asterisco)ducks
,chmod a+x ducks
y luego usarlo./ducks
para ejecutarlo? Entonces solo veo el uso total del disco, tanto en Mac OS X como en Ubuntu 2014-10. También intenté poner laducks() { ...}
definición.bashrc
y luego usarladucks
para ejecutarla, y lo mismo en Mac OS X, solo veo el gran totalVuélvete loco con este script
fuente
En ausencia de GNU
sort -h
, esto debería funcionar en la mayoría de los entornos UNIX:fuente
Este maneja nombres de archivos con espacios en blanco o apóstrofes, y funciona en sistemas que no admiten
xargs -d
osort -h
:lo que resulta en:
fuente
Esto ordenará la salida en orden decreciente de tamaño:
Esto ordenará la salida en orden creciente de tamaño:
PD: esto se puede usar para ordenar por cualquier columna, pero los valores de esa columna deben estar en el mismo formato
fuente
sort -k1rn
es equivalentesort -rn
y se ordena numéricamente según la secuencia inicial de dígitos decimales en cada línea. No entiende de punto flotante, y que no entiende losk
,M
,G
... sufijos. 10.1k se consideraría mayor que 1.23GProbado en Solaris!
Esto generará todos los tamaños de directorio de forma recursiva, en la parte inferior será el directorio más grande en Gigabytes y en la parte superior más pequeño en Kilobytes.
fuente
El más grande está en la parte inferior:
fuente
Mando:
du -ah . | sort -k1 -h | tail -n 50
Explicación:
du -ah .
sort -k1 -h | tail -n 50
fuente
Para ordenar por tamaño en MB
fuente
du -h
(salida legible por humanos) ordenada numéricamente. No estás dando una respuesta a eso. También puede vincular su cuenta UNIX-SE con las otras cuentas que tiene en los otros sitios SE.Este script es aún más fácil:
fuente
para OSX
fuente
-k
solo la cancelación-h
y, de ser así, ¿cómo proporciona esto la salida legible por humanos solicitada por el OP?