Necesito obtener el tamaño del directorio en la terminal para firmar. Estoy usando el siguiente comando:
du -s /path/to/dir
Estoy multiplicando el resultado por el tamaño de bloque UNIX tradicional (512 bytes) y obtengo el tamaño real del directorio en bytes. Sin embargo, la ventana de diálogo "Obtener información" del Finder muestra el tamaño ligeramente más pequeño que el calculado con el comando de terminal. Y parece que es reproducible en cualquier carpeta / paquete. ¿Qué me estoy perdiendo?
fuente
actual
oapparent
. (También vea mi explicación actualizada).Sobre Mac OS X y el Finder (en Snow Leopard, versión 10.6.8) he notado lo siguiente.
bash
(1)) a continuación.Hasta ahora he visto que mis cifras 'cuantificadas' son las mismas que las cifras 'cuantificadas' en el Finder .
BLOCKSIZE
establecida en mi shell, pero probé (ahora, un poco) ambas versiones y los valores predeterminados para$BLOCKSIZE
dan los mismos valores.Lo único que puedo decir es que me acerco contando solo los archivos (excluyendo así el directorio ~ 'meta-índice / encabezado del sistema de archivos' ~ datos) y que lo más cercano que obtengo es con lo siguiente.
du
(1) ni (gnu)gdu
(1) parecen contar atributos extendidos (xattr
)Y luego debo simplemente jugar "Corre el camino y haz los cálculos".
Paz y buenas noches para esta vez.
fuente
En mi sistema Ubuntu, usando ext4,
du -b file
da el tamaño en bytes de un archivo real, ydu -b dir
da el tamaño en bytes del archivo (s) + sobrecarga del directorio. La sobrecarga es, en mi caso, múltiplos de 4096 bytes.Esta sobrecarga aumenta a medida que aumenta el número de archivos.
Nota: incluso si se eliminan los archivos, la sobrecarga del directorio permanece en el nivel más alto que tenía antes de eliminar los archivos.
No he intentado reiniciar para ver si se revierte, pero en cualquier caso, esto significa que el tamaño del directorio varía según las circunstancias históricas.
El recuento de cada tamaño de archivo puede ser la mejor opción para obtener un valor preciso del tamaño total de los archivos .
El siguiente script totaliza todos los tamaños de archivo (en bytes).
Para OS X, si no tiene la
-b
opción para 'du', puede usarlastat
en su lugar. (Si la tiene :) ... La línea comentada muestra lastat
alternativa de Ubuntu adu -b
;fuente
du -b
y un diferentestat
. Su script no es portátil fuera de Linux de ninguna manera.coreutils
para obtener la versión GNU dedu
asgdu
. Por lo tanto, no es exactamente portátil, pero puede ser útil para las personas en OS X para obtener las versiones GNU de algunas utilidades principales.Suma todos los archivos en un directorio:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
fuente
find: unrecognized: -printf
. Imagen alpina