¿Enumera los tamaños de carpeta de la carpeta actual con el terminal?

134

Quiero una lista de las carpetas del directorio actual o una que especifique con su tamaño.

He intentado con du pero solo obtengo el tamaño de los directorios que especifico (du. ./F1), y ls no muestra el tamaño de las carpetas.

¿Cómo hago esto sin ningún script?

Kevin
fuente
no sonar como un imbécil, sino 'man du';)
Jakub
55
Gracias ;-) pero ya lo intenté y no pude encontrar nada. ¡Y prueba a buscar en Google!
Kevin

Respuestas:

212

Si desea mostrar todos los directorios en el directorio actual:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Para mostrarlos comenzando desde otro directorio:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Si desea asegurarse de que se incluyen directorios con nombres que comienzan con un punto, hágalo shopt -s dotglobprimero.

Dennis Williamson
fuente
Gracias a todas las excelentes respuestas, pero esta es la más simple. Olvidé el final / en mis pruebas.
Kevin
1
Donde -s significa resumir, mostrar el total y -h significa legible por humanos
wranvaud
2
Ordenar las carpetas por tamaño: du -s */ | sort -n.
Anton Tarasenko el
1
@AntonTarasenko: Ordenar tamaños legibles por humanos
Dennis Williamson
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
18

En una Mac, la opción --max-depth se sustituye por -d [profundidad]. Por lo tanto, para ver una lista legible para humanos de su unidad raíz más 2 niveles, use lo siguiente:

du -hd 2 /* 

Nota: este comando expondrá los dos niveles superiores del directorio fuera de su raíz. Esto incluye atravesar un nivel en sus volúmenes y enumerará los tamaños de resumen de cada directorio de nivel superior en cada uno de sus volúmenes adjuntos. Dependiendo de lo que haya adjuntado, este comando puede tardar un tiempo en completarse.

jadik
fuente
13

Otro enfoque es la opción --max-depth.

du -h --max-depth=1 .

Enumerará todos los directorios y archivos en la carpeta actual con el tamaño.

La profundidad 2 enumeraría un nivel más de carpetas.

Matthias Krull
fuente
44
En Mac, es du -hd 2 .para 2 niveles de profundidad.
Ryan
Ah, sí. Y probablemente también en FreeBSD. Gracias por la info.
matthias krull
5

Tratar:

$ du -s ./f1

o

$ du -sh ./f1

para tamaños legibles más amigables.

Doug Harris
fuente
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
fuente
3
Al agregar una respuesta a una pregunta anterior con respuestas existentes, es una buena práctica explicar cómo su respuesta es diferente e incluir alguna explicación para que no sea una respuesta de solo comando.
Jason Aller
3
¿Puedes ampliar tu respuesta para explicar qué hacen los parámetros?
fixer1234
2

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 espacios vacíos en un servidor remoto donde no tiene una configuración gráfica completa disponible, 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 similar a POSIX con ncurses instalado.

Rayo
fuente
2

Sobre la base de la respuesta aceptada, este comando le mostrará los tamaños de las carpetas en el directorio y también los enumerará por tamaño para que pueda interpretarlos más fácilmente:

$ du -sh */ | sort -rn
Ethan
fuente
1

En Mac, puede instalar la implementación de GNU (Linux) ducon Homebrew ( brew install coreutils). Entonces, por ejemplo:

gdu folder -shL --exclude=.git

dónde

  • gdues el nombre dado a la implementación de GNU du(por defecto, Homebrew no se oculta /usr/bin/du);
  • s produce un gran total para la carpeta especificada (omita si desea ver el desglose);
  • h produce tamaños legibles por humanos;
  • L sigue enlaces simbólicos;
  • --exclude=.git excluye el directorio git dentro de la carpeta especificada (esto es solo un ejemplo).

Puede ignorar más carpetas agregando --exclude=blah. También puede especificar varias carpetas a la vez (es decir gdu folder1 folder2 ...), y en ese caso, puede combinar todos los subtotales en un solo tamaño utilizando la opción c.

Sheljohn
fuente
1

Aquí hay un script POSIX que funcionará con:

  • Un archivo
  • Archivos
  • Un directorio
  • Directorios
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Fuente

Steven Penny
fuente