La versión BSD de duutilizada 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 -hbandera 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 findy awkdarle 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 awkse usa para contar los bytes. La -type fbandera 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 dupuede dar valores en bytes reales en lugar de bloques. Es lamentable que la versión BSD de duno sea tan flexible.
-kopción para usar el tamaño de bloque de 1K-byte