Cuando utilizo lso du, obtengo la cantidad de espacio en disco que ocupa cada archivo.
Necesito la suma total de todos los datos en archivos y subdirectorios que obtendría si abriera cada archivo y contara los bytes. Puntos de bonificación si puedo obtener esto sin abrir cada archivo y contar.

lsen realidad muestra el número de bytes en cada archivo, no la cantidad de espacio en disco. ¿Es esto suficiente para sus necesidades?duno se puede utilizar para responder a esta pregunta. Muestra la cantidad de espacio en disco que ocupa el directorio en el disco (los datos de los archivos más el tamaño de la metainformación del sistema de archivos auxiliar). Ladusalida puede ser incluso menor que el tamaño total de todos los archivos. Esto puede suceder si el sistema de archivos puede almacenar datos comprimidos en el disco o si se utilizan vínculos físicos. Las respuestas correctas se basan enlsyfind. Vea las respuestas de Nelson y bytepan aquí, o esta respuesta: unix.stackexchange.com/a/471061/152606Respuestas:
Si desea el 'tamaño aparente' (que es el número de bytes en cada archivo), no el tamaño que ocupan los archivos en el disco, use la opción
-bo--bytes(si tiene un sistema Linux con GNU coreutils ):fuente
du -shb(como sugiere esta respuesta), la-bconfiguración parece anular la-hconfiguración.du -sh --apparent-size /dir/Utilizar
du -sb:Opcionalmente, agregue la
hopción para una salida más fácil de usar:fuente
brew install coreutils. Estará disponible como comandogdu.ls->file.gz hardlink-to-file.gz.stat -c %s file.gz->9657212.stat -c %s hardlink-to-file.gz->9657212.du -sb->9661308. Definitivamente no es el tamaño total del contenido, sino el tamaño que ocupa el directorio en el disco.cd al directorio, luego:
ftw!
Originalmente escribí sobre esto aquí: https://ao.gl/get-the-total-size-of-all-the-files-in-a-directory/
fuente
-Lopción paraduseguir los enlaces simbólicos.Solo una alternativa:
grep -v '^d'excluirá los directorios.fuente
ls -lR | grep '.png$' | awk '{total += $5} END {print "Total:", total/1024/1024, "MB"}'duesta solución, realmente cuenta el tamaño total de todos los datos en los archivos como si se abrieran uno por uno y se contaran sus bytes. Pero sí, también-Aes necesario agregar el parámetro para contar los archivos ocultos.El formato "% s" de stat le da el número real de bytes en un archivo.
No dude en sustituir su método favorito para sumar números .
fuente
find -print0yxargs -0son necesarios para nombres de archivo con espacios. OS X quierestat -f %z.duinformes como discos ).duutilidad, esta respuesta es correcta. Es muy similar a responder aquí: unix.stackexchange.com/a/471061/152606 . Pero también usaría en! -type dlugar de-type fcontar los enlaces simbólicos (el tamaño del enlace simbólico en sí (generalmente unos pocos bytes), no el tamaño del archivo al que apunta).Si usa "du" de busybox en el sistema emebedded, no puede obtener un byte exacto con du, solo puede obtener Kbytes.
fuente
Cuando se crea una carpeta, muchos sistemas de archivos Linux asignan 4096 bytes para almacenar algunos metadatos sobre el directorio en sí. Este espacio aumenta en un múltiplo de 4096 bytes a medida que crece el directorio.
du command (con o sin la opción -b) tome en cuenta este espacio , como puede ver escribiendo:
tendrá un resultado de 4096 bytes para un directorio vacío. Entonces, si coloca 2 archivos de 10000 bytes dentro del directorio, la cantidad total dada por du -sb sería 24096 bytes.
Si lee atentamente la pregunta, esto no es lo que se preguntó. El interrogador preguntó:
que en el ejemplo anterior debería ser 20000 bytes, no 24096.
Entonces, la respuesta correcta en mi humilde opinión podría ser una combinación de la respuesta de Nelson y la sugerencia de hlovdal para manejar nombres de archivos que contienen espacios:
fuente
Hay al menos tres formas de obtener la "suma total de todos los datos en archivos y subdirectorios" en bytes que funcionan tanto en Linux / Unix como en Git Bash para Windows, enumerados a continuación en orden de más rápido a más lento en promedio. Para su referencia, se ejecutaron en la raíz de un sistema de archivos bastante profundo (
docrooten una instalación de Magento 2 Enterprise que comprende 71,158 archivos en 30,027 directorios).1.
2.
3.
Estos dos también funcionan, pero se basan en comandos que no existen en Git Bash para Windows:
1.
2.
Si sólo desea que el total para el directorio actual, a continuación, añadir
-maxdepth 1afind.Tenga en cuenta que algunas de las soluciones sugeridas no devuelven resultados precisos, por lo que me quedaría con las soluciones anteriores.
fuente
dces parte delbcpaquete, por lo que para obtenerlodces necesario instalarlobc.Para Win32 DOS, puede:
c:> dir / sc: \ directorio \ que \ desea
y la penúltima línea le dirá cuántos bytes ocupan los archivos.
Sé que lee todos los archivos y directorios, pero funciona más rápido en algunas situaciones.
fuente
dues útil, perofindes útil en caso de que desee calcular el tamaño de algunos archivos solamente (por ejemplo, usando el filtro por extensión). También tenga en cuenta quefindellos mismos pueden imprimir el tamaño de cada archivo en bytes. Para calcular un tamaño total podemos conectar eldccomando de la siguiente manera:Aquí
findgenera una secuencia de comandos para medcgusta123 + 456 + 11 +. Aunque, el programa completo debería ser como0 123 + 456 + 11 + p(recuerde la notación de sufijo).Entonces, para obtener el programa completo, debemos colocarlo
0en la pila antes de ejecutar la secuencia desde stdin e imprimir el número superior después de ejecutar (elpcomando al final). Lo logramos a través dedcopciones:-e0es solo un atajo-e '0'que pone0en la pila,-f-es para leer y ejecutar comandos desde stdin (el generadofindaquí),-epes para imprimir el resultado (-e 'p').Para imprimir el tamaño en MiB como
284.06 MiBpodemos usar-e '2 k 1024 / 1024 / n [ MiB] p'en el punto 3 (la mayoría de los espacios son opcionales).fuente
Esto puede ayudar:
El comando anterior sumará todos los archivos que salen del tamaño de los directorios.
fuente
-Adebe agregar la opción als.Utilizar:
Donde <DIR> es el directorio que desea inspeccionar.
El '-c' le da datos totales que se extraen usando la porción 'grep total' del comando, y el recuento en Kbytes se extrae con el comando awk.
La única advertencia aquí es que si tiene un subdirectorio que contiene el texto "total", también se escupirá.
fuente