Мне нужно получить размер каталога в терминале для подписи. Я использую следующую команду:
du -s /path/to/dir
Я умножаю результат на традиционный размер блока UNIX (512 байт) и получаю фактический размер каталога в байтах. Тем не менее, диалоговое окно Finder «Get Info» показывает размер, немного меньший, чем тот, который рассчитывается с помощью команды терминала. И кажется, что это воспроизводимо на любой папке / связке. Что мне не хватает?
источник
actual
илиapparent
. (Также см. Мое обновленное объяснение).О Mac OS X и Finder (в Snow Leopard, версия 10.6.8) я заметил следующее.
bash
(1)) ниже.Насколько я видел, мои «количественные» цифры совпадают с «количественными» показателями в Finder. ,
BLOCKSIZE
установленной в моей оболочке, но я протестировал (сейчас немного) обе версии и значения по умолчанию для$BLOCKSIZE
дает одинаковые значения.Единственное, что я могу сказать, это то, что я становлюсь ближе, считая только файлы (таким образом исключая каталог ~ 'мета-индекс / заголовок файловой системы' ~ данные), и что ближе всего я получаю следующее.
du
(1), ни (gnu)gdu
(1) не учитывают расширенные атрибуты (xattr
)И тогда я должен просто каламбур "
Пройди путь и посчитай " Мир и спокойной ночи на этот раз.
источник
В моей системе Ubuntu, используя ext4,
du -b file
дает размер в байтах фактического файла иdu -b dir
дает размер в байтах файла (ов) + служебные данные каталога. В моем случае накладные расходы кратны 4096 байтам.Эти издержки увеличиваются с увеличением количества файлов.
Примечание: даже если файлы удалены, издержки каталога остаются на более высоком уровне, чем до удаления файлов.
Я не пробовал перезагружаться, чтобы посмотреть, не восстановится ли он, но в любом случае это означает, что размер каталога меняется в зависимости от исторических обстоятельств.
Подсчет каждого размера файла может быть лучшим вариантом для точного значения общих размеров файлов .
Следующий скрипт суммирует все размеры файлов (в байтах).
Для OS X, если у вас нет
-b
опции «du», вы можете использоватьstat
вместо этого (если у вас есть :) ... Строка с комментариями показываетstat
альтернативу Ubuntudu -b
;источник
du -b
и другойstat
. Ваш сценарий не переносим вне Linux в любом случае.coreutils
чтобы получить версию GNUdu
asgdu
. Так что это не совсем переносимо, но может быть полезно для людей на OS X, чтобы получить версии GNU нескольких основных утилит.Суммируйте все файлы в каталоге:
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}'
источник
find: unrecognized: -printf
, Альпийское изображение