"Gzip: stdin має більше одного запису - відпочинок ігнорується", а "gzip: tmp.gz має більше одного запису - без змін"


4

У мене є певний файл з ім’ям tmp.gz. Коли я намагаюся розпакувати його за допомогою gzip -d, я отримую повідомлення про помилку, що в ньому є кілька записів:

$ gzip -d tmp.gz
gzip: tmp.gz has more than one entry -- unchanged
$ gzip -d < tmp.gz > tmp
gzip: stdin has more than one entry--rest ignored

(І я, звичайно, отримую ті самі помилки, gunzipа не замість них gzip -d.)

Отже, як розпакувати його та отримати всі файли?

Відповіді:


8

Як пояснив 'druuna' на http://www.linuxquestions.org/questions/linux-software-2/gunzip-%5Bfile%5D-has-more-than-one-entry-unchanged-618990/#post3047709 , це може статися, якщо це насправді ZIP-файл, а не gz-файл, просто з оманливим розширенням, і він містить кілька файлів. ( gzip -dпідтримує ZIP-файли, що містять лише один файл.)

У моєму випадку це саме так:

$ file tmp.gz 
tmp.gz: Zip archive data, at least v2.0 to extract

і використовувати unzip, ніж gzip -dпрацював ідеально.


Аналогічно, якщо zcatповідомляє про цю помилку, замість цього використовуйте unzip -c.
Каміль Ґудсейне

@CamilleGoudeseune: Це цікава пропозиція, але я не дуже згоден. Ця помилка трапляється лише в тому випадку, якщо архів Zip містить декілька файлів (оскільки gzip -d/ gunzip/ zcat/ zlessвсі підтримують однофайлові Zip-архіви просто добре). Отже, якщо ви отримаєте цю помилку, ви не можете просто механічно змінити свою команду на використання unzip; скоріше, вам потрібно зробити крок назад і вирішити, що ви хочете робити зараз. Це, безумовно, пов'язане unzipпевним чином, але я не думаю, що корисно намагатися бути занадто точним. Типові випадки використання zcatне задовольняються unzip -c.
ruakh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.