2012-02-15 4 views

ответ

28

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

zip -g xxx.zip folder/file 

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

+2

Если я хочу поместить yyy.txt в папку xxx.apk's assests, сначала я должен создать папку assests, а затем переместить yyy.txt в нее. А затем вычистите zip -g xxx.apk assests/yyy.txt – asfman

3

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

+0

, если я хочу поместить yyy.txt в папку assests xxx.apk, сначала я должен создать папку assests, а затем переместить yyy.txt в нее. А затем excute zip -g xxx.apk assests/yyy.txt – asfman

+1

Или вы можете создать искусственную запись zip, которая помещает ее в 'assets /', а затем объединить ее с данными из файла и добавить в zip-файл. –

7

Чтобы уточнить @Ignacio Васкес-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-файле.

2

Я затрачивается немного @ "что другой парень" решение

Перейти к консоли, нажмите 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 
Смежные вопросы