Чтобы ответить на заголовок вопроса:
Как я могу получить несжатый размер файла gzip, не распаковывая его?
Как вы, очевидно, знаете, опция -l
( --list
) обычно показывает несжатый размер.
То, что он показывает, не рассчитывается по данным, но было сохранено в заголовке как часть сжатого файла.
В вашем случае -l
опция по какой-то причине не работает.
Но невозможно «измерить» несжатый размер из необработанных сжатых данных - в сжатых данных просто нет информации о чем-либо другом - что неудивительно, поскольку смысл сжатия состоит в том, чтобы исключить все ненужное.
Вам не нужно хранить несжатые данные на диске: zcat file.gz | wc -c
это правильный подход, но, как ответил @OleTange, вы, zcat
похоже, не тот gzip
.
Альтернативой является использование gzip
параметров -d
( --decompress
) и -c
( --to-stdout
) в сочетании с wc
параметром -c
( --bytes
):
gzip -dc file.gz | wc -c