Как можно прочитать содержимое определенного файла в архиве, не извлекая .zip, в котором он находится? Я использую командную строку Linux.
Более раннийвопросспрашивает о просмотре каталога архива. Но мне недостаточно увидеть просто список файлов в архиве, мне нужно увидеть содержимое файла в архиве.
решение1
unzip -l archive.zip
выводит список содержимого ZIP-архива, чтобы убедиться, что ваш файл находится внутри.
Используйте эту -p
опцию для записи содержимого именованных файлов на стандартный вывод (экран) без необходимости распаковывать весь архив.
unzip -p archive.zip file1.txt | less
Для такого рода операций я всегда передаю вывод в less
, в противном случае весь файл вылетает на экран прежде, чем вы успеете его прочитать.
Кстати, zcat отлично подходит для просмотра содержимого файлов .gz без необходимости их предварительной распаковки.
Редактировать:Изменил этот ответ, чтобы использовать -p
вместо -c
. -p
извлекает файл байт-за-байтом, при этом -c
печатает имя файла и может выполнять преобразование EOL. Также unzip -p
позволяет извлекать несколько файлов, но не выводит в указанном порядке, как cat
это делает.
решение2
решение3
zipinfo
— еще один инструмент, который вы можете использовать. Он полезен, если вы работаете в заблокированной системе, где unzip
это не разрешено.
решение4
Запустите Emacs
командную строку и откройте ваши zip-файлы с помощью Zip-Archive
mode. Без какой-либо настройки Emacs/elisp (которой обычно боятся новые пользователи), вы увидите сведения о файле, например from zipinfo
: modes, length, date, time
После этого вы сможете открывать файлы в буферах и даже сохранять изменения обратно в архив с помощью стандартных сочетаний клавиш:
- Введите имя файла в списке, чтобы открыть его.
- Редактировать и сохранить с помощью
Ctrl-x Ctrl-s
- Удалить буфер
Ctrl-k
, чтобы вернуться к архивному буферу и продолжить
В Zip-Archive
буфере используйте Ctrl-h m
для получения всех сочетаний клавиш, доступных в представлении справки.
Надеюсь, это поможет вам открыть для себя замечательные возможности Emacs.