Есть ли способ определить распакованный размер файла .bz2?

33

Есть ли способ напечатать распакованный размер файла .bz2, не распаковывая его целиком?

эндолиты
источник
То есть в выводе bzip нет метаданных об исходном файле? > :(
эндолит
не то, чтобы я видел ссылку на. : /
Квик-кихот

Ответы:

35

Как отмечают другие, bzip2 не предоставляет много информации. Но этот метод работает - вам придется распаковать файл, но вам не нужно будет записывать распакованные данные на диск, что может оказаться для вас «достаточно хорошим» решением:

$ ls -l foo.bz2
-rw-r--r-- 1 ~quack ~quack 2364418 Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c         # bzcat decompresses to stdout, wc -c counts bytes
2928640                         # number of bytes of decompressed data

Вы можете направить этот вывод во что-то другое, чтобы получить читабельную форму:

$ ls -lh foo.bz2
-rw-r--r-- 1 quack quack 2.3M Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c | perl -lne 'printf("%.2fM\n", $_/1024/1024)'
2.79M
шарлатан
источник
9
Ну, это заняло всего пять минут 100% CPU для расчета.
эндолит
2
только? И это будет заполнить диск? У меня есть сжатый архив старой установки Linux, который всего 407 мг, но мой бедный древний сервер занял 30-45 минут, чтобы извлечь. это включало запись на диск, но мне придется запустить этот скрипт, чтобы рассчитать время.
вернись
Конечно, я выбрал самый маленький файл для первого теста. 140 МБ сжатых -> 3 ГБ без сжатия. Файлы большего размера сжаты на 5 ГБ ...
endolith
хех ... дай мне знать, насколько большими окажутся 5ГБ ... и сколько времени понадобится, чтобы разобраться с этим с помощью XD
кряканья,
-2

Чтобы прочитать расширение файла .bz без разархивирования.

bzcat dbtax_ext_en.ttl.bz2 |zless
Шашанк Мотепалли
источник
1
bzcat и zless не работают вместе, как это. Используйте «bzcat file.bz2 | less» или «bzless file.bz2», или, если у вас есть файл в формате gzipped, «zcat file.gz | less» или «zless file.gz». На самом деле, справочная страница для zless отмечает, что «Zless не работает со сжатыми данными, которые передаются ему через стандартный ввод; для этого необходимо, чтобы входные файлы были указаны в качестве аргументов».
Ник Руссо