Читать содержимое архива без извлечения?


153

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

Более ранний вопрос касается просмотра каталога архива. Но для меня недостаточно просто просмотреть список файлов в архиве, мне нужно увидеть содержимое файла в архиве.



@ fixer1234 (и другие): связанный вопрос спрашивает: «Как я могу просмотреть файлы в ZIP-архиве?» AFAIC, это тот же вопрос, что и «Как я могу увидеть содержимое файла…?». К сожалению, многие из люди, которые ответили на этот вопрос, интерпретировали его как «Как я могу просмотреть каталог архива?» Однако ответ Жиля (естественно) и ответ Раджасекара Толети (очевидно) на этот вопрос дают ответы на этот вопрос.
Скотт

1
@ Скотт, может быть, нам следует выяснить, как объединить два вопроса, чтобы обе темы были охвачены одним, или переориентировать другой, чтобы четко указать каталог, а затем переместить ответы между обоими местами в соответствии с вопросами. Прямо сейчас, оба - путаница.
fixer1234

@ fixer1234: Согласен, до определенного момента. Модераторы всегда говорят нам, что дубликаты - хорошая вещь, потому что они обеспечивают большую поверхность воздействия на поисковые системы (то есть, больше шансов, что поиск найдет один из вопросов). Но есть загвоздка: если пользователь находит один из вопросов, и связь не очевидна (и никто не смотрит на списки «связанных» и «связанных» вопросов - по крайней мере, не случайных последователей результатов поиска), то Пользователь нашел только часть ответов. ДэвидПостилл проголосовал окончательно, чтобы вновь открыть этот вопрос; может тебе стоит поговорить с ним.
Скотт

@ Скотт - Учитывая, что задающий вопрос пометил ответ «Как я могу просмотреть каталог архива?» Как принятый, я должен подумать, что, скорее всего, цель этого вопроса. Это, к сожалению, неоднозначно сформулировано так, что это может означать любую интерпретацию.
М. Джастин

Ответы:


198

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

Используйте -cопцию для записи содержимого именованных файлов в стандартный вывод (экран) без необходимости распаковывать весь архив.

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

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

Кстати, zcat отлично подходит для просмотра содержимого файлов .gz без необходимости распаковывать их.


8
По крайней мере, в Ubuntu по умолчанию как-то настроено less, так что на less archive.zipсамом деле отображается список файлов.
Авив

1
bzcat для просмотра содержимого файлов bz2 без необходимости сначала их распаковывать ...
Джастин Э,

3
unzip -c также показывает имя файла и некоторые дополнительные сообщения (отправляя их на стандартный вывод). Использование -p вместо этого отправляет файл только в двоичном формате. Это более полезно для трубопроводов
Хуан Калеро

С вашим параметром $LESSOPENlesspipe вы можете просто less foo.gzпросматривать распакованное содержимое. (@aviv: это то же самое , что позволяет less foo.zipк трубе unzip -l foo.zipв себя).
Питер Кордес

unzip -c archive.zip '*' | lessделает то, что я искал: cat содержимое архива zip.
Питер Кордес

4

zipinfoэто еще один инструмент, который вы можете использовать, это полезно, если вы находитесь в заблокированной системе, где unzipэто запрещено.


4

Если вы просто хотите , чтобы просматривать изображения внутри архивов, вы можете использовать Comix или более новую версию MComix , чтобы увидеть изображения внутри .zip, .rar, .cbrи .cbzфайлы без извлечения.


2

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

Затем вы сможете открывать файлы в буферах и даже сохранять свои изменения обратно в архив, используя стандартные ярлыки:

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

В Zip-Archiveбуфере используйте, Ctrl-h mчтобы получить все ярлыки, доступные в представлении справки.

Надеюсь, это поможет вам открыть для себя удивительные возможности Emacs



0

Я нашел less archive.zipсамый простой способ сделать это.


2
less archive.zip не показывает содержимое архива , он только показывает содержимое архива .
Карел

Спасибо за разъяснения, @karel
RobertMyles

Я думаю, что то, что вы действительно пытаетесь сделать, будет таким же, как и ответ Даниэлькрайги.
Карел

-1

Если файл включен в zip-архив, то вам нужно извлечь только этот файл из архива (может зависеть от типа архива, некоторые архивы не могут извлекать файлы отдельно)


Да, но вы можете извлечь в стандартный вывод и направить прямо в пейджер.
Питер Кордес

Это не технический ответ, скорее, от политика или адвоката. Пожалуйста, будьте более конкретны! (покажите команду для примера)
Хола Сой Эду Фелиз Навидад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.