GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo ordenar la salida du -h por tamaño?

Solución 1:

A partir de GNU coreutils 7.5 publicado en agosto de 2009, sort permite un -h parámetro, que permite sufijos numéricos del tipo producido por du -h :

du -hs * | sort -h

Si está utilizando una ordenación que no admite -h , puede instalar GNU Coreutils. P.ej. en un Mac OS X anterior:

brew install coreutils
du -hs * | gsort -h

Desde sort manuales:

-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)

Solución 2:

du | sort -nr | cut -f2- | xargs du -hs

Solución 3:

@Douglas Leeder, una respuesta más:ordene la salida legible por humanos de du -h usando otra herramienta. ¡Como Perl!

du -h | perl -e 'sub h{%h=(K=>10,M=>20,G=>30);($n,$u)=shift=~/([0-9.]+)(\D)/;
return $n*2**$h{$u}}print sort{h($b)<=>h($a)}<>;'

Dividir en dos líneas para adaptarse a la pantalla. Puede usarlo de esta manera o convertirlo en una sola línea, funcionará de cualquier manera.

Salida:

4.5M    .
3.7M    ./colors
372K    ./plugin
128K    ./autoload
100K    ./doc
100K    ./syntax

EDITAR: Después de algunas rondas de golf en PerlMonks, el resultado final es el siguiente:

perl -e'%h=map{/.\s/;99**(ord$&&7)-$`,$_}`du -h`;[email protected]{sort%h}'

Solución 4:

Hay una herramienta inmensamente útil que utilizo 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 liviano, y tiene paquetes en todas las distribuciones principales.

Solución 5:

du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh

Linux
  1. ¿Se puede personalizar el tamaño de fuente de Grub?

  2. Cómo ordenar un archivo en el lugar

  3. ¿Cómo puedo recorrer la salida de un comando de shell?

  4. ¿Cómo puedo hacer que ls muestre archivos de puntos primero?

  5. ¿Cómo puedo monitorear el disco io?

Cómo usar du Command en Linux

¿Cómo puedo filtrar resultados únicos de la salida grep?

¿Cómo puedo ordenar ls por propietario y grupo?

¿Cómo puedo ver la salida de dmesg a medida que cambia?

Cómo ordenar esta salida 1,10,11..2

¿Cómo puedo ocultar la salida de una aplicación de shell en Linux?