La versión BSD de du
utilizada en OS X informa el tamaño con bloques de 512 bytes: los tamaños se redondean esencialmente al siguiente valor de 512 bytes. Esto le indica el espacio en el disco, que es mayor que la cantidad de datos. Si tiene muchos archivos pequeños, la diferencia puede ser grande.
Aquí hay un ejemplo.
Este es el valor con regular du
. Está en bloques de 512 bytes:
$ du -s
248 .
La -h
bandera da como resultado un número más legible, en kilobytes. Como se esperaba, es la mitad del número de bloques de 512 bytes:
$ du -hs
124K .
Finalmente, puede usar find
y awk
darle la suma de bytes reales en los archivos. Esto es un poco lento, pero funciona:
$ find . -type f -exec ls -l {} \; | awk '{sum += $5} END {print sum}'
60527
Este valor coincide exactamente con el número informado por la ventana Obtener información de Finder. (No hay bifurcaciones extrañas o xattrs en este conjunto de archivos). Es significativamente menor que el valor informado por du
.
Así es como funciona: obtiene una lista de todos los archivos y los pasa a ls -l
; entonces awk
se usa para contar los bytes. La -type f
bandera está ahí para que solo se envíen archivos (y no directorios) ls
. Sin ese indicador, también enviará nombres de directorio ls
, y cada archivo se mostrará dos veces: una vez como un archivo individual y otra como un elemento en el directorio.
La versión GNU de du
puede dar valores en bytes reales en lugar de bloques. Es lamentable que la versión BSD de du
no sea tan flexible.
-k
opción para usar el tamaño de bloque de 1K-byte