2012-02-15 7 views
21

मैं एक ज़िप फ़ाइल के भीतर रूट फ़ोल्डर में एक फ़ाइल जोड़ने के लिए कैसे पता है के भीतर एक विशिष्ट फ़ोल्डर में एक फ़ाइल जोड़ने के लिए:linux कैसे एक ज़िप फ़ाइल

ज़िप जी xxx.apk yyy.txt

लेकिन मैं पता नहीं कैसे आप मूल निर्देशिका पदानुक्रम में के रूप में ही फ़ोल्डर में फ़ाइल जोड़ने के लिए की जरूरत है एक ज़िप फ़ाइल

उत्तर

28

के भीतर एक विशेष फ़ोल्डर निर्दिष्ट करने के लिए है, तो आप सिर्फ पूर्ण जोड़ने की जरूरत इसके लिए पथ:

zip -g xxx.zip folder/file 

अन्यथा, ऐसा करने का सबसे आसान तरीका एक अस्थायी निर्देशिका में ज़िप फ़ाइल में आपको वही लेआउट बनाना है।

+2

अगर मैं yyy.txt को xxx.apk के assests 'फ़ोल्डर में रखना चाहता हूं, तो पहले मुझे assests फ़ोल्डर बनाना होगा, फिर yyy.txt को इसमें ले जाना चाहिए। और उसके बाद zip -g xxx.apk assests/yyy.txt – asfman

3

जानकारी-ज़िप यह नहीं कर सकता है। आपको उस भाषा में एक स्क्रिप्ट या प्रोग्राम लिखना होगा जिसमें ज़िप फ़ाइलों के लिए निम्न-स्तरीय पहुंच हो।

#!/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 जोड़ देगा:

+0

उत्तेजित करें यदि मैं yyy.txt को xxx.apk के assests 'फ़ोल्डर में रखना चाहता हूं, सबसे पहले मुझे assests फ़ोल्डर बनाना होगा, फिर yyy.txt को इसमें ले जाएं। और उसके बाद ज़िप-जी xxx.apk assests/yyy.txt – asfman

+1

या आप एक कृत्रिम ज़िप प्रविष्टि उत्पन्न कर सकते हैं जो इसे 'संपत्ति /' में रखता है, फिर उसे फ़ाइल से डेटा के साथ संयोजित करें और इसे ज़िप फ़ाइल में जोड़ें। –

7

एक साल पहले से @Ignacio वेज़क्वेज़-अब्राम जवाब पर विस्तार से बता दें कि आप एक निचले स्तर पुस्तकालय, इस तरह के एक है कि अजगर के साथ आता है के रूप में उपयोग कर सकते हैं फ़ाइल फ़ाइल में dir/in/zip/file.txt के रूप में फ़ाइल सिस्टम।

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