Извлеките только определенный файл из архива с zip-файлом в заданный каталог

Мне нужно извлечь один файл из ZIP-файла, для которого я знаю путь. Есть ли команда, подобная следующей:

unzip -d . myarchive.zip path/to/zipped/file.txt

К сожалению, приведенная выше команда извлекает и воссоздает весь путь к файлу по адресу ./path/to/zipped/file.txt. Есть ли способ для меня просто вытащить файл в указанный каталог?

zip
117 голосов | спросил Naftuli Kay 1 J0000006Europe/Moscow 2011, 03:14:38

4 ответа


98

Вы можете извлечь только текст для стандартного вывода с помощью опции -p:

unzip -p myarchive.zip path/to/zipped/file.txt >file.txt

Это не будет извлекать метаданные (дата, разрешения, â | |), а только содержимое файла. Это цена, которую нужно заплатить за то, что вам не нужно было перемещать файл после этого.

В качестве альтернативы смонтируйте архив как каталог и просто скопируйте файл. С AVFS :

mountavfs
cp -p ~/.avfs"$PWD/myarchive.zip#"/path/to/zipped/file.txt .

Или с плавким предохранителем :

mkdir myarchive.d
fuse-zip myarchive.zip myarchive.d
cp -p myarchive.d/path/to/zipped/file.txt .
fusermount -u myarchive.d; rmdir myarchive.d
ответил Gilles 1 J0000006Europe/Moscow 2011, 03:43:19
112
unzip -j "myarchive.zip" "in/archive/file.txt" -d "/path/to/unzip/to"

Введите полный путь для заархивированного файла, а не только имя файла. Не забудьте сохранить структуру, как видно из zip-файла.

Это извлечет единственный файл file.txt в myarchive.zip в /path/to/unzip/to/file.txt .

ответил sMyles 4 TueEurope/Moscow2012-12-04T10:49:26+04:00Europe/Moscow12bEurope/MoscowTue, 04 Dec 2012 10:49:26 +0400 2012, 10:49:26
15

Упрощенная версия:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

Это будет воссоздавать PATH_OF_FILE_INSIDE_ARCHIVE в текущем каталоге, но только извлекает указанный файл.

Чтобы просмотреть все файлы в архиве Zip:

unzip -l ARCHIVE_NAME
ответил Taukir 8 J000000Monday13 2013, 14:31:21
-1

В macOS , который по умолчанию использует Info-Zip

Сначала перечислите файлы, чтобы найти то, что вы хотите

unzip -l my.zip

Затем укажите список файлов для извлечения из архива

unzip my.zip nameOfFileToExtract
ответил Cameron Lowell Palmer 28 PMpFri, 28 Apr 2017 12:22:36 +030022Friday 2017, 12:22:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132