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


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.