¿Cómo puedo calcular el tamaño de un directorio?

181

¿Cómo saber el tamaño de un directorio? Incluyendo subdirectorios y archivos.

Juanjo Conti
fuente

Respuestas:

230
du -s directory_name

O para obtener una salida legible por humanos:

du -sh directory_name

La -sopción significa que no enumerará el tamaño de cada subdirectorio, solo el tamaño total.

sepp2k
fuente
77
En realidad du, la unidad predeterminada es bloques de 512 bytes según POSIX, y kilobytes en Linux (a menos que se establezca la variable de entorno POSIXLY_CORRECT) o con du -k.
Gilles
3
@Gilles: Buena captura. He eliminado el bit "número de bytes" de mi respuesta.
sepp2k
1
funcionó según lo prescrito
skidadon
1
si el directorio es muy grande y tiene muchos subdirectorios, lleva mucho tiempo ... casi 1 minuto ... ¿es eso normal? ¿Hay alguna manera de obtener el tamaño más rápidamente?
Sí, el
2
Necesitaba calcular el tamaño de mi carpeta "bolsa", ¡ du -sh bagfuncionó perfectamente!
António Almeida
7

Si bien el uso de un paquete separado como ncdu puede funcionar bien, la misma comparación de muchas carpetas se puede hacer, hasta cierto punto, simplemente dando una lista de carpetas para dimensionar. Por ejemplo, para comparar directorios de nivel superior en su sistema ...

cd /    
sudo du -sh ./*
NFlourish
fuente
2
Más simplemente,du -sh /*
roaima
7

GNU dutoma una -bopción.

Vea la manpágina y la infopágina para más ayuda:

-b, --byteses equivalente a--apparent-size --block-size=1

usuario2573436
fuente
1
du -csh

-c produce gran total

Kalpesh Soni
fuente
1
El -cno tiene sentido utilizar junto con -s, ¿verdad? -ssolo muestra el tamaño del directorio especificado, es decir, el tamaño total del directorio.
Andreas Storvik Strauman
1

Tratar

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Esto ayuda a encontrar directorios grandes para luego filtrarlos usando du -sh ./*

Rollinjack
fuente
0

también puedes usar ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l es para una lista larga; -d es para mostrar la información del directorio, no el contenido del directorio, -h es para mostrar el tamaño en formato legible por huma.

fromnaboo
fuente
44
Esto no es correcto, la persona que pregunta claramente está buscando la huella de un directorio y su contenido en el disco. La respuesta de @ sepp2k es correcta.
blong
1
El comando ls -ldh solo muestra el tamaño de la estructura de inodo de un directorio. La métrica es un reflejo del tamaño de la tabla de índice de los nombres de archivo, pero no del tamaño real del contenido del archivo dentro del directorio.
linbianxiaocao
0

Siempre instalo el paquete "ncdu" y veo toda la salida de todos los directorios con representación gráfica. Esto se debe a que generalmente necesito saber qué ocupa la mayor cantidad de espacio en disco en mis máquinas, independientemente de cuánto sume un solo directorio.

Uso: sudo ncdu /(No necesita sudocarpetas en las que tenga permiso de lectura).

Tomará un tiempo escanear las estadísticas de uso del disco en todo el sistema de archivos. Tiene una bonita representación gráfica de línea de comandos e incluye navegación con el teclado usando las teclas de flecha, como ir más profundo o más alto en la ruta escaneada. También puede eliminar elementos presionando D.

Etescartz
fuente
0

Puede usar "file-size.sh" de la biblioteca awk Velour :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
fuente
0

du -hd1

enumerará en formato legible por humanos los tamaños de todos los directorios, p. ej.

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
fuente
0

Intenté con el siguiente comando, ya que se ha proporcionado la mejor respuesta

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

salida

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
fuente