Necesito obtener una lista de lectura humana de salida.
Sin embargo, du
no tiene una opción de "ordenar por tamaño", y la tubería sort
no funciona con la bandera legible por humanos.
Por ejemplo, ejecutando:
du | sort -n -r
Emite un uso de disco ordenado por tamaño (descendente):
du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1
508 ./dir2
Sin embargo, ejecutarlo con el indicador legible por humanos no se ordena correctamente:
du -h | sort -n -r
508K ./dir2
64M .
61M ./dir3
2.1M ./dir4
1.1M ./dir1
¿Alguien sabe de una manera de ordenar du -h
por tamaño?
du
pero agregas -h alsort
comando. Puede agregar-rh
para que los más grandes estén primero en el archivo; de lo contrario, debetail
ver los cerdos espaciales.Respuestas:
A partir de GNU coreutils 7.5 lanzado en agosto de 2009,
sort
permite un-h
parámetro, que permite sufijos numéricos del tipo producido pordu -h
:Si está utilizando un tipo que no es compatible
-h
, puede instalar GNU Coreutils. Por ejemplo, en una Mac OS X anterior:Del
sort
manual :-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
fuente
du -BM | sort -nr
como una solución alternativa: es lo suficientemente legible para los humanos, y está ordenado, si alguien está atrapado con los coreutils más antiguos.du -hs * | gsort -h
du -BM
imprime todo en megabytes, por lo que un archivo de 168K en realidad se mostrará como 0M. A menos que haya alguna otra discrepancia de versión que desconozco. Mi versión dedu
solo muestra valores enteros de megabytes.fuente
@ Douglas Leeder, una respuesta más: clasifique la salida legible por humanos de du -h usando otra herramienta. ¡Como Perl!
Dividir en dos líneas para adaptarse a la pantalla. Puede usarlo de esta manera o hacerlo de una sola línea, funcionará de cualquier manera.
Salida:
EDITAR: Después de algunas rondas de golf en PerlMonks , el resultado final es el siguiente:
fuente
stderr
debido a quedie
¿puede cambiarla para activarlastdout
?die
aprint
ay se irá astdout
. Son solo dos personajes más.Hay una herramienta inmensamente útil que uso llamada ncdu que está diseñada para encontrar esas molestas carpetas y archivos de alto uso de disco, y eliminarlos. Está basado en consola, es rápido y ligero, y tiene paquetes en todas las distribuciones principales.
fuente
du
, si solo desea identificar los directorios grandes.fuente
du -k --total
, da un error al finaldu: cannot access 'total': No such file or directory
head
agregando `| cabeza -50` al final.Por lo que puedo ver, tienes tres opciones:
du
para ordenar antes de mostrar.sort
para admitir tamaños humanos para la ordenación numérica.También puedes hacer
du -k
y vivir con tamaños en KiB.Para la opción 3, puede usar el siguiente script:
fuente
También tuve ese problema y actualmente estoy usando una solución alternativa:
Esto no producirá valores escalados, pero siempre producirá el tamaño en megabytes. Eso es menos que perfecto, pero para mí es mejor que nada (o mostrar el tamaño en bytes).
fuente
Encontré esta publicación en otro lugar. Por lo tanto, este script de shell hará lo que desee sin invocar
du
todo dos veces. Se utilizaawk
para convertir los bytes sin formato a un formato legible para humanos. Por supuesto, el formato es ligeramente diferente (todo se imprime con una precisión de un decimal).Ejecutar esto en mi
.vim
directorio produce:(Espero que 3.6 millones de esquemas de color no sean excesivos).
fuente
Esta versión utiliza
awk
para crear columnas adicionales para ordenar las claves. Solo llamadu
una vez. La salida debería verse exactamente igualdu
.Lo he dividido en varias líneas, pero puede recombinarse en una sola línea.
Explicación:
Pruébelo sin el
cut
comando para ver qué está haciendo.Aquí hay una versión que ordena dentro del script AWK y no necesita
cut
:fuente
du -sh *
mostrar solo los archivos y directorios inmediatos sin descendencia recursiva.Aquí hay un ejemplo que muestra los directorios en una forma resumida más compacta. Maneja espacios en el directorio / nombres de archivo.
fuente
ordenar archivos por tamaño en MB
fuente
Tengo un contenedor de python simple pero útil para du llamado dutop . Tenga en cuenta que nosotros (los mantenedores de coreutils) estamos considerando agregar la funcionalidad de ordenar para ordenar la salida "humana" directamente.
fuente
sort
bandera)Tengo otro:
Me empieza a gustar Perl. Puede que tengas que hacer un
primero. Para todos los hackers de Perl: Sí, sé que la parte de clasificación también se puede hacer en Perl. Probablemente la parte du, también.
fuente
Este fragmento fue desvergonzado enganchado de 'Jean-Pierre' de http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . ¿Hay alguna manera de que pueda acreditarlo mejor?
fuente
23423423432423
Use la bandera "-g"
Y en mi directorio / usr / local produce resultados como este:
fuente
Otro:
fuente
Aquí está el método simple que uso, uso de recursos muy bajo y le brinda lo que necesita:
fuente
Encontré este en línea ... parece funcionar bien
fuente
Aprendí awk al inventar este ejemplo ayer. Me llevó algo de tiempo, pero fue muy divertido, y aprendí a usar awk.
Se ejecuta solo du una vez, y tiene una salida muy similar a du -h
Muestra números por debajo de 10 con un punto decimal.
fuente
du -cka --max-depth = 1 / var / log | sort -rn | cabeza -10 | awk '{print ($ 1) / 1024, "MB", $ 2'}
fuente
Si necesita manejar espacios, puede usar lo siguiente
La declaración adicional de sed ayudará a aliviar problemas con carpetas con nombres como Application Support
fuente
Voilà:
fuente
http://dev.yorhel.nl/ncdu
comando: ncdu
Navegación de directorios, clasificación (nombre y tamaño), gráficos, legibles por humanos, etc.
fuente
Otra
awk
soluciónfuente
Había estado usando la solución proporcionada por @ptman, pero un cambio reciente en el servidor hizo que ya no fuera viable. En cambio, estoy usando el siguiente script bash:
fuente
du -d 1
sintaxis de BSD ha sido respaldada por GNU du desde que coreutils 8.6 se lanzó en 2010 (aunque su primera disponibilidad de Red Hat fue RHEL 7 en 2014), por lo que ya no la necesita--maxdepth=1
. Solo me enteré de esto recientemente.fuente
Aquí hay muchas respuestas, muchas de las cuales son duplicadas. Veo tres tendencias: pasar por una segunda llamada du, usar código shell / awk complicado y usar otros idiomas.
Aquí hay una solución compatible con POSIX que utiliza du y awk que debería funcionar en todos los sistemas.
He adoptado un enfoque ligeramente diferente, agregando
-x
para garantizar que permanezcamos en el mismo sistema de archivos (solo necesito esta operación cuando tengo poco espacio en disco, entonces, ¿por qué eliminar cosas que he montado dentro de este árbol FS o movido y enlace simbólico?) y muestra unidades constantes para facilitar el análisis visual. En este caso, normalmente elijo no ordenar para poder ver mejor la estructura jerárquica.(Dado que esto está en unidades consistentes, puede agregar
| sort -n
si realmente desea ordenar los resultados).Esto filtra cualquier directorio cuyo contenido (acumulativo) no supere los 512 MB y luego muestre los tamaños en gigabytes. Por defecto, du usa un tamaño de bloque de 512 bytes (por lo que la condición de awk de 2 20 bloques es de 512 MB y su divisor de 2 21 convierte las unidades a GB; podríamos usar
du -kx
con$1 > 512*1024
ys/1024^2
para que sea más legible para los humanos). Dentro de la condición awk, establecemoss
el tamaño para que podamos eliminarlo de la línea ($0
). Esto retiene el delimitador (que se contrae en un solo espacio), por lo que el final%s
representa un espacio y luego el nombre del directorio agregado.%7s
alinea el%.2f
tamaño de GB redondeado (aumente a%8s
si tiene> 10 TB).A diferencia de la mayoría de las soluciones aquí, esto admite correctamente directorios con espacios en sus nombres (aunque cada solución, incluida esta, manejará mal los nombres de directorio que contienen saltos de línea).
fuente
Al menos con las herramientas habituales, esto será difícil debido al formato en el que se encuentran los números legibles por humanos (tenga en cuenta que la clasificación hace un "buen trabajo" aquí, ya que clasifica los números: 508, 64, 61, 2, 2) simplemente no puede ordenar los números de coma flotante con un multiplicador adicional).
Lo intentaría al revés: use la salida de "du | sort -n -r" y luego convierta los números a formato legible para humanos con algún script o programa.
fuente
Lo que puedes probar es:
Espero que ayude.
fuente
xargs
por lo que este formulario era necesario. Sin embargo, para los archivos con espacios en ellos, debe configurar IFS:IFS=$'\n'
fuente