Linux comment append un fichier à un dossier spécifique dans un fichier zip

Je sais comment append un fichier au dossier racine dans un fichier zip:

zip -g xxx.apk yyy.txt

mais je ne sais pas comment spécifier un dossier particulier dans un fichier zip

Si vous devez append le fichier dans le même dossier que dans la hiérarchie du répertoire d’origine, il vous suffit d’append le chemin complet:

zip -g xxx.zip folder/file 

Sinon, la façon la plus simple de le faire est de créer la même disposition que dans le fichier zip d’un répertoire temporaire.

Pour développer la réponse à @Ignacio Vazquez-Abrams il y a un an, vous pouvez utiliser une bibliothèque de niveau inférieur, telle que celle fournie avec 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 

Cela ouvrira myfile.zip et appenda le fichier source/dir/file.txt du système de fichiers sous la forme dir/in/zip/file.txt dans le fichier zip.

Info-ZIP ne peut pas le faire. Vous devrez écrire un script ou un programme dans un langage ayant un access de bas niveau aux fichiers zip.

J’ai dépensé une petite solution @ “cet autre gars”

Aller à la console, appuyez sur ctrl + x, ctrl + e, collez-y

 ( 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 

puis lancez /tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml

Exemple:

 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 - 

Résultat:

 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