2012-02-15 12 views

Odpowiedz

28

Jeśli trzeba dodać plik w tym samym folderze co w pierwotnym hierarchii katalogów, a następnie po prostu trzeba dodać pełny ścieżka do niego:

zip -g xxx.zip folder/file 

W przeciwnym razie najprawdopodobniej najprostszym sposobem jest stworzenie takiego samego układu, jakiego potrzebujesz w pliku zip w katalogu tymczasowym.

+2

jeśli chcę umieścić plik yyy.txt w folderze assests xxx.apk, najpierw muszę utworzyć folder assests, a następnie przenieść do niego plik yyy.txt. A następnie wyodrębnij zip -g xxx.apk assests/yyy.txt – asfman

3

Info-ZIP nie może tego zrobić. Będziesz musiał napisać skrypt lub program w języku, który ma dostęp niższego poziomu do plików zip.

+0

, jeśli chcę umieścić yyy.txt w folderze assests xxx.apk, najpierw muszę utworzyć folder assests, a następnie przenieść do niego plik yyy.txt. A następnie wyodrębnij zip -g xxx.apk assests/yyy.txt – asfman

+1

Możesz też wygenerować sztuczny wpis zip, który umieści go w "assets /", a następnie połączyć go z danymi z pliku i dodać do pliku zip. –

7

Aby rozwinąć @Ignacio Vazquez-Abrams odpowiedzi z lat temu, można korzystać z biblioteki niższego poziomu, takich jak ten, który pochodzi z 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 

To otworzy myfile.zip i dodać source/dir/file.txt od system plików jako dir/in/zip/file.txt w pliku zip.

2

Mam wydatkowane trochę @ "że inny facet" rozwiązanie

Go pocieszyć, naciśnij Ctrl + X, Ctrl + E, wklej tam

(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 

następnie uruchomić /tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml

Przykład :

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 - 

Wynik:

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 
Powiązane problemy