Linux, как добавить файл в определенную папку в ZIP-файл - PullRequest
24 голосов
/ 15 февраля 2012

я знаю, как добавить файл в корневую папку внутри zip-файла:

zip -g xxx.apk yyy.txt

но я не знаю, как указать конкретную папку в zip-файле

Ответы [ 4 ]

30 голосов
/ 15 февраля 2012

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

zip -g xxx.zip folder/file

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

9 голосов
/ 28 апреля 2013

Чтобы уточнить ответ @Ignacio Vazquez-Abrams, полученный год назад, вы можете использовать библиотеку более низкого уровня, например ту, которая поставляется с Python:

#!/bin/bash
python -c '
import zipfile as zf, sys
z=zf.ZipFile(sys.argv[1], "a")
z.write(sys.argv[2], sys.argv[3])
z.close()
' myfile.zip source/dir/file.txt dir/in/zip/file.txt

Откроется myfile.zip и добавится source/dir/file.txt из файловой системы как dir/in/zip/file.txt в zip-файл.

3 голосов
/ 15 февраля 2012

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

2 голосов
/ 17 декабря 2013

Я потратил небольшое @ "решение этого парня"

Перейдите в консоль, нажмите Ctrl + X, Ctrl + E, вставьте туда

( cat <<-'EOF'
#!/bin/bash
if [ $# -lt 3 ]; then
echo my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml
exit
fi

python -c '
import zipfile as zf, sys
z=zf.ZipFile(sys.argv[1], "a")
z.write(sys.argv[2], sys.argv[3])
z.close()' $1 $2 $3
EOF
) > /tmp/zip-extend && chmod +x /tmp/zip-extend

, затем запустите /tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml

Пример:

cd /tmp
touch first_file.txt
zip my_zip.zip first_file.txt
unzip -l my_zip.zip
mkdir -p your/existing
touch your/existing/file_to_add.xml
/tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml
unzip -l my_zip.zip
cd -

Результат:

Archive:  my_zip.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-12-17 15:24   first_file.txt
        0  2013-12-17 15:24   directory_in_zip/file_to_add.xml
---------                     -------
        0                     2 files
...