2012-02-15 11 views

Respuesta

28

Si es necesario agregar el archivo a la misma carpeta que en la jerarquía de directorios original, a continuación, sólo tiene que añadir el pleno camino hacia él:

zip -g xxx.zip folder/file 

De lo contrario, probablemente la manera más fácil de hacerlo es crear el mismo diseño que necesita en el archivo zip en un directorio temporal.

+2

si quiero poner yyy.txt en la carpeta de los assests de xxx.apk, primero debo crear la carpeta de los assests, luego mover yyy.txt en ella. Y luego ejecute zip -g xxx.apk assests/yyy.txt – asfman

3

Información-ZIP no puede hacer esto. Deberá escribir una secuencia de comandos o un programa en un idioma que tenga acceso de menor nivel a los archivos comprimidos.

+0

si quiero poner yyy.txt en la carpeta de assests de xxx.apk, primero debo crear la carpeta de assests, luego mover yyy.txt dentro de ella. Y luego ejecute zip -g xxx.apk assests/yyy.txt – asfman

+1

O bien, puede generar una entrada zip artificial que la coloque en 'assets /', luego combinarla con los datos del archivo y agregarla al archivo zip. –

7

Para más detalles sobre @Ignacio Vazquez-Abrams respuesta de hace un año, se puede utilizar una biblioteca de nivel inferior, tal como el que viene con 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 

Esto abrirá myfile.zip y añadir source/dir/file.txt de el sistema de archivos como dir/in/zip/file.txt en el archivo zip.

2

he gastado un poco @ "ese otro tipo" solución

Ir a la consola, pulse Ctrl + X, Ctrl + E, pegue allí

(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 

continuación, ejecute /tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml

Ejemplo :

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 - 

Resultado:

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 
Cuestiones relacionadas