Пожалуйста, найдите детали моей ОС:
$ uname -a
AIX xxyy 1 6 000145364C00
Я пробовал следующую команду, чтобы получить размер файла в архиве gzip:
$ gzip -l mycontent.DAT.Gz
compressed uncompr. ratio uncompressed_name
-1223644243 1751372002 -75.3% mycontent.DAT.Gz
Не уверен, как интерпретировать распакованный размер из этого. Размер сжатого файла близок к 4 ГБ.
Итак, я попробовал эту опцию, чтобы получить правильные данные:
$ zcat mycontent.DAT.Gz | wc -c
Это дает мне эту ошибку:
mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0
Подскажите, пожалуйста, как получить это значение из сценария оболочки, не распаковывая исходный файл?
Ответы:
Чтобы ответить на заголовок вопроса:
Как вы, очевидно, знаете, опция
-l
(--list
) обычно показывает несжатый размер.То, что он показывает, не рассчитывается на основе данных, но было сохранено в заголовке как часть сжатого файла.
В вашем случае
-l
опция по какой-то причине не работает.Но невозможно «измерить» несжатый размер по необработанным сжатым данным - в сжатых данных просто нет информации о чем-либо другом - что неудивительно, поскольку смысл сжатия заключается в том, чтобы исключить все ненужное.
Вам не нужно хранить несжатые данные на диске:
zcat file.gz | wc -c
это правильный подход, но, как ответила @OleTange,zcat
похоже, что вы не тотgzip
.Альтернативой является использование
gzip
параметров-d
(--decompress
) и-c
(--to-stdout
) в сочетании сwc
параметром-c
(--bytes
):источник
-l
Вариант имеет ошибку для файлов размером более 4 Гб: bugs.debian.org/cgi-bin/bugreport.cgi?bug=149775Вы
zcat
не GNU Zcat, но от сжатия. Пытаться:источник
gzip -l не работает для меня, просто git -1 ... но это сработало:
источник
Я нахожу все сайты в Интернете и не решаю эту проблему, получая размер, когда размер файла больше 4 ГБ.
мое решение таково :
для получения общего размера из файла gz:
источник