2013-02-19 15:34:27 +0000 2013-02-19 15:34:27 +0000
104
104

¿Mostrar el tamaño de cada sub-directorio en un formato de lista usando un comando de una línea en Bash?

Quiero obtener una lista de los directorios y sus tamaños en un formato de lista como el que se obtiene cuando se hace un ls -l.

La cuestión es que ¿hay algún comando de una línea que pueda hacer esto? Veo que otros tienen comandos largos sólo para dar salida a esto. Eso es demasiado largo.

¿Qué comando puede hacer esto o una combinación de comandos que se pueda escribir fácilmente? du -h lo da, pero muestra todas las subcarpetas que no es lo que quiero. sólo las carpetas de los directorios actuales.

回答 (4)

126
126
126
2013-02-19 15:36:20 +0000

Pruebe esto

du -h --max-depth=1

Salida

oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .

Alternativa

Si --max-depth=1 es un poco demasiado largo para su gusto, también puede intentar usar:

du -h -s *

Esto utiliza -s (--summarize) y sólo imprimirá por defecto el tamaño de la propia carpeta. Al pasar todos los elementos del directorio de trabajo actual (*), produce una salida similar a la que produciría --max-depth=1:

Salida

oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src

La diferencia es sutil. El primer enfoque mostrará el tamaño total del directorio de trabajo actual y el tamaño total de todas las carpetas que contiene… pero sólo hasta una profundidad de 1.

El último enfoque calculará el tamaño total de todos los elementos pasados individualmente. Así, incluye el enlace simbólico lib64 en la salida, pero excluye los elementos ocultos (cuyo nombre empieza por un punto). Tampoco incluye el tamaño total del directorio de trabajo actual, ya que no se ha pasado como argumento.

79
79
79
2016-06-17 23:04:29 +0000

Probablemente quiera ver los directorios ordenados por tamaño:

$ du -hs * | sort -hr

856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
6
6
6
2014-11-06 14:52:37 +0000

Imprime los tamaños de todas las carpetas y archivos ocultos del disco:

el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
3
3
3
2016-06-12 12:29:56 +0000

Vale la pena mencionar el comando de shell NCurses Disk Usage .

Ncdu es un analizador de uso de disco con una interfaz ncurses. Está diseñado para encontrar los acaparadores de espacio en un servidor remoto donde no se dispone de una configuración gráfica completa, pero es una herramienta útil incluso en sistemas de escritorio normales. Ncdu pretende ser rápido, simple y fácil de usar, y debería poder ejecutarse en cualquier entorno mínimo tipo POSIX con ncurses instalado.