¿Cómo encontrar recursivamente la cantidad almacenada en el directorio?

136

Sé que puede ver el tamaño de byte de un archivo cuando hace una lista larga con llo ls -l. Pero quiero saber cuánto almacenamiento hay en un directorio, incluidos los archivos dentro de ese directorio y los subdirectorios allí, etc. No quiero la cantidad de archivos, sino la cantidad de almacenamiento que ocupan esos archivos.

Entonces, ¿quiero saber cuánto almacenamiento hay en un determinado directorio de forma recursiva? Supongo, si hay un comando, que estaría en bytes.

Rob Avery IV
fuente

Respuestas:

146

Intenta hacer esto:

du -s dir

o

du -sh dir

necesita -hsoporte, depende de su sistema operativo.

Ver

man du
Gilles Quenot
fuente
2
agregar -ba salida en bytes
pcnate
44
--todos enumeran todos los archivos y -h muestra el tamaño del archivo en formato legible para humanos du -h
--todos
29

Tu solo haces:

du -sh /path/to/directory

donde -ses para resumen y -hpara lectura humana ( opción no estándar ).

Sin embargo, tenga cuidado , a diferencia de lsesto, no mostrará el tamaño del archivo sino el uso del disco (es decir, un múltiplo del tamaño de bloque del sistema de archivos), pero el archivo puede ser más pequeño o incluso más grande, por lo que puede usar la --apparent-sizeopción:

du -sh --apparent-size /path/to/directory

Este es el tamaño que se transferiría a través de la red si fuera necesario.

De hecho, el archivo puede tener "agujeros" (shell vacío), puede ser más pequeño que el tamaño de bloque del sistema de archivos, puede estar comprimido en el nivel del sistema de archivos, etc. La página del manual explica esto.

Como señala Nicklas , también puede usar el analizador de uso de disco. Lanzado desde un directorio, le mostrará qué carpetas y archivos usan espacio en disco al ordenarlos de mayor a menor.ncdu

Puedes ver esta pregunta también.

Totor
fuente
19

Tenga en cuenta que si desea conocer el tamaño de todas las carpetas {sub} dentro de un directorio, también puede usar la opción -do --max-depthde du(que toma un argumento: el límite recursivo)

Por ejemplo :

du -h /path/to/directory -d 1

Te mostrará algo como

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PD: Entrar 0como límite recursivo es equivalente a la -sopción. Esos 2 comandos le darán el mismo resultado (su directorio dado tamaño legible humano recursivo):

du -h /path/to/directory -d 0
du -sh /path/to/directory
Flo Schild
fuente
-d 1debe estar antes de la ruta del directorio
Abhinav Singi
¿Necesidades? Funciona para mí después de la ruta del directorio, en ubuntu / debian. Aunque es mejor tenerlo antes, estoy de acuerdo
Flo Schild
14

Una alternativa al ducomando ya mencionado sería ncduun buen analizador de uso de disco para usar en terminal. Es posible que deba instalarlo primero, pero está disponible en la mayoría de los repositorios de paquetes.

Editar: para ver el formato de salida, vea estas capturas de pantalla http://dev.yorhel.nl/ncdu/scr

Niklas
fuente
¡Milagro! Con esto puedo ver qué carpetas tienen un gran volumen de almacenamiento en disco. Incluso encontré todos mis archivos que desaparecieron misteriosamente. Gran herramienta es.
Faron
11

Esto le dará una lista de tamaños del directorio actual, incluidas las carpetas (recursivas) y los archivos.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt
Simon Liu
fuente
3
ordenar por tamaño: du -hs * | sort -hs
Kaiser
3

En Unix, un directorio solo contiene nombres y referencias a objetos del sistema de archivos (inodos, que pueden referirse a directorios, archivos u otras cosas exóticas). Un archivo puede aparecer con varios nombres en el mismo directorio, o aparecer en varios directorios. Entonces, "el espacio utilizado por el directorio y los archivos dentro" realmente no tiene sentido, ya que los archivos no están "dentro".

Dicho esto, el comando du(1)enumera el espacio utilizado por un directorio y todo lo que se puede alcanzar a través de él, du -sda un resumen, con -halgunas implementaciones como GNU dudar salida "legible para humanos" (es decir, kilobyte, megabyte).

vonbrand
fuente
1

Para mí funcionó al revés en el caso de la profundidad y el camino en un OS X El Capitán

du -h -d 1 /path/to/directory
GZepeda
fuente
1

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

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