3

используя zip archive file я получил:

adding: file (deflated 40%)

-rw-rw-r-- 1 lenduya lenduya 757 Jan 18 16:26 archive.zip
-rw-rw-r-- 1 lenduya lenduya 973 Jan 18 16:25 file

Вопрос в том, я не уверен, как он получил 40%. 973/757 - 1,28, а 757/973 - 0,77. 757/(973-757) составляет 3,5, а 973/(973/757) - 4,5.

Бонус: цель в том, что аргумент скрипта - это файл. Я должен напечатать, чтобы вывести степень сжатия zip . Мой мыслительный процесс заключался в том, что я использовал сводку zip , выводил ее в файл и оттуда отфильтровал нужную информацию, используя cut или tr . bc будет иметь дело с форматированием float. Я нахожусь на хорошем пути или есть намного более простой путь?

1 ответ1

2

Первый вопрос: 40%. Это то, сколько "места" было удалено из исходного файла, когда он был сжат. Размер .zip-файла включает в себя служебные данные, такие как значения CRC, внутренний индекс файла и т.д. Чем меньше исходный файл, тем больше относительное соотношение пространства, используемого для служебных данных.

Чтобы найти сжатый размер файла без накладных расходов, используйте unzip и перечислите содержимое

unzip -v archive.zip

Ваш пример, вероятно, использовал ~ 173 байта или ~ 23% архива для служебных данных. Выполнение файла размером 18 КБ потребляло примерно одинаковые служебные данные в 162 байта или ~ 0,2% от размера файла zip.

Математика для вашего случая: сжатый размер ~ 584 байта, сэкономленное место 973-584 = 389 байтов, степень сжатия 584/973 = 60% или коэффициент дефляции 389/973 = 40%, накладные расходы 757-584 = 173 и 173/757 = 23%.

Бонусный раздел: Выход.

Вы можете прочитать этот вывод и проанализировать его, если хотите. Дефлированный процент будет как можно ближе без десятичных разрядов. Если вы обрабатываете один файл, это неплохо. Если вы обрабатываете несколько в одном архиве, это может быть интересно, но все же возможно. Лучше использовать команду unzip выше. Если вы запустите его в своем архиве, вы увидите, что в нем указан размер файла и сжатый размер дважды. Второй раз - сводка для архива, который в данном случае представляет собой один файл. Если у вас есть несколько файлов, итоговая сумма представляет собой общую сумму сэкономленного пространства в процентах от исходного размера файла.

Поскольку вы студент, я оставлю работу по анализу вашему воображению в качестве упражнения для оттачивания вашего мастерства.

Удача.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .