it-swarm-ru.tech

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

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

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

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

168
Naftuli Kay

Вы можете извлечь только текст в стандартный вывод с помощью -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 .

Или с Fuse-Zip :

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
144
unzip -j "myarchive.Zip" "in/archive/file.txt" -d "/path/to/unzip/to"

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

Это позволит извлечь один файл file.txt в myarchive.Zip до /path/to/unzip/to/file.txt.

169
sMyles

Более простая версия:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

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

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

unzip -l ARCHIVE_NAME
25
Taukir

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

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

unzip -l my.Zip

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

unzip my.Zip annoying/path/to/file

Объединить с -p для стандартного вывода

unzip -p my.Zip annoying/path/to/file >./file
4
Cameron Lowell Palmer

простое использование:

unzip zipfile.Zip path/inside/Zip/file.txt

и он раздувает файл.

$ unzip -l ./../html.Zip | grep wp-config

     3328  07-22-2019 15:10   html/wp-config.php

     2898  01-07-2019 23:30   html/wp-config-sample.php

$ unzip ./../html.Zip html/wp-config.php

     Archive:  ./../html.Zip
     inflating: html/wp-config.php

$ ls -lrth

     total 4.0K
     drwxr-sr-x 2 Apache apache 4.0K Jul 26 14:41 html

$ ls -lrth html/*

     total 4.0K
     -rw-rw-rw- 1 Apache apache 3.3K Jul 22 15:10 wp-config.php
2
Cesar Alejandro Bravo Anaya

Извлечь в относительный каталог

unzip -j -d relativedir archive.Zip path/in/archive/file.ext

Извлечь в текущий каталог

unzip -j -d . archive.Zip path/in/archive/file.ext

Извлечь в абсолютный каталог

unzip -j -d /absolutedir archive.Zip path/in/archive/file.ext
0
Gapmeister66