Читати вміст заархівованого файлу без вилучення?


153

Як я можу прочитати вміст певного файлу в архіві, не витягаючи .zip, в якому він міститься? Я використовую командний рядок Linux.

Попереднє запитання задає питання про перегляд каталогу архіву. Але для мене недостатньо бачити лише список файлів в архіві, мені потрібно бачити вміст файлу в архіві.



@ fixer1234 (та інші) . Пов'язане запитання запитує: "Як я можу переглянути файли в архіві ZIP?" AFAIC, це те саме питання, як "Як я бачу вміст файлу ...?" Прикро, що багато хто люди, які відповіли на це запитання, тлумачили це як "Як я можу переглянути каталог архіву?" Однак відповідь Гілла (природно) та Раджасехар Толеті (мабуть) відповідь на це питання дають відповіді на це питання.
Скотт

1
@Scott, можливо, ми мусимо розібратися, як об’єднати два питання, щоб обидві теми були охоплені одним, або переорієнтувати іншу, щоб чітко говорити про каталог, а потім перемістити відповіді між обома місцями, щоб відповідати питанням. Прямо зараз обидва є мішаниною.
fixer1234

@ fixer1234: Я згоден, до певного моменту. Модератори завжди говорять нам, що дублікати - це хороша річ, оскільки вони забезпечують більшу поверхню експозиції в пошукових системах (тобто більше шансів, що пошук знайде одне з питань). Але є рубіж: якщо користувач знайде одне із запитань, а посилання не очевидно (і ніхто не переглядає списки "Пов'язаних" та "Пов'язаних" питань - принаймні, не випадкових послідовників результатів пошуку), то Користувач знайшов лише частину відповідей. ДевідПостілл віддав остаточне голосування, щоб знову відкрити це питання; можливо, вам слід поговорити з ним.
Скотт

@Scott - З огляду на те, що запитуючий запитання позначив відповідь "Як я можу переглянути каталог архіву?", Як прийнято, я маю думати, що це, мабуть, було питанням. На жаль, це неоднозначно сформульовано таким чином, що може означати будь-яке тлумачення.
М. Джастін

Відповіді:


198

unzip -l archive.zip перелічує вміст архіву ZIP, щоб переконатися, що ваш файл знаходиться всередині.

Скористайтеся -cопцією, щоб записати вміст іменованих файлів у stdout (екран) без розпакування всього архіву.

unzip -c archive.zip file1.txt file2.txt | less

Для такого роду операцій я завжди передаю вихід less, інакше весь файл летить вгору по екрану, перш ніж ви зможете прочитати його.

BTW zcat чудово підходить для перегляду вмісту файлів .gz, не спочатку їх розпаковувати.


8
Принаймні, в Ubuntu менше налаштовано так, щоб це зробити за замовчуванням - так less archive.zipфактично відображається список файлів.
авів

1
bzcat для перегляду вмісту файлів bz2, не спочатку їх розпаковувати ...
Justin E

3
unzip -c також показує ім'я файлу та деякі додаткові повідомлення (надсилаючи їх до stdout). Замість цього -p файл надсилає лише у двійковому форматі. Це корисніше для трубопроводів
Хуан Калеро

З вашим $LESSOPENнабором для lesspipe, ви можете просто less foo.gzпереглянути вміст розпакованого. (@Aviv: це те ж саме , що дозволяє less foo.zipдо труби unzip -l foo.zipв себе).
Пітер Кордес

unzip -c archive.zip '*' | lessробить те, що я шукав: кот вміст zip-архіву.
Пітер Кордес

4

zipinfoце ще один інструмент, який ви можете використовувати, це корисно, якщо ви перебуваєте у заблокованій системі, де unzipзаборонено.


4

Якщо ви просто хочете , щоб переглядати зображення всередині архівів, ви можете використовувати Comix або новішу версію MComix , щоб побачити зображення всередині .zip, .rar, .cbrі .cbzфайли без вилучення.


2

Почніть Emacsв командному рядку та відкрийте поштові файли в Zip-Archiveрежимі. Без будь-якої настройки Emacs / elisp (нові користувачі, як правило, бояться), ви побачите деталі файлів, такі як zipinfo: режими, тривалість, дата, час

Тоді ви зможете відкривати файли в буферах і навіть зберігати свої зміни назад в архів за допомогою стандартних ярликів:

  • Введіть ім’я файлу в список, щоб відкрити його
  • Відредагуйте та збережіть за допомогою Ctrl-x Ctrl-s
  • Вбийте буфер, Ctrl-kщоб повернутися до архіву та продовжити

Перебуваючи в Zip-Archiveбуфері, використовуйте Ctrl-h mдля отримання всіх ярликів, доступних у Довідці.

Сподіваємось, це може привести вас до відкриття чудових функцій Emacs



0

Я знайшов less archive.zipнайпростіший спосіб зробити це.


2
Менш archive.zip не відображає вміст заархівованого файлу, він лише показує вміст заархівованого архіву .
карел

Дякуємо за роз’яснення, @karel
RobertMyles

Я думаю, що те, що ти насправді намагаєшся, було б таким самим, як відповідь даніелкрагі.
карел

-1

Якщо файл включений до zip-архіву, вам потрібно витягти лише цей файл з архіву (може залежати від типу архіву, деякі архіви не можуть вилучити файли окремо)


Так, але ви можете витягнути для stdout і передати прямо в пейджер.
Пітер Кордес

Це не технічна відповідь, це скоріше політик чи адвокат. Будь ласка, будьте більш конкретними! (покажіть команду для прикладу)
Hola Soy Edu Feliz Navidad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.