Info-Zip में अपडेट करने के बजाय मौजूदा ज़िप फ़ाइल को ओवरराइट कैसे करें?


30

एक ताजा ज़िप फ़ाइल प्राप्त करने के लिए जैसे टार करता है, क्या मुझे rm foo.zipनिष्पादित करने से पहले प्रदर्शन करना होगा zip?

$ mkdir foo; touch foo/bar
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/baz (stored 0%)
$ unzip -l foo.zip
Archive:  foo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2011-10-27 07:49   foo/
        0  2011-10-27 07:49   foo/bar
        0  2011-10-27 07:49   foo/baz
---------                     -------
        0                     3 files

जवाबों:


32

"फ़ाइल सिंक" के लिए -FS विकल्प का उपयोग करें

zip -FSr foo.zip foo

यह फ़ोल्डर में किसी भी नई फाइल को ज़िप में जोड़ देगा, और किसी भी फाइल को उस ज़िप से हटा देगा जो फ़ोल्डर में नहीं है।


ज़िप के किस संस्करण में यह विकल्प है? मेरी जिप कमांड "-S" को नहीं पहचानती है
जयन

2
स्विच -FSनहीं है -Fऔर -Sएक साथ है। यह ज़िप 3.0 के बाद से कम से कम है। जाँच करें man zip
पॉल

"नई फ़ाइल" कैसे परिभाषित की जाती है? इसकी फाइल में बदलाव, तारीख संशोधित, दोनों? बस जिज्ञासु
Moseleyi

यह सिर्फ काम करता है Zip 3.0और इसके लिए काम नहीं करता Zip 2.32(ज़िप पैक में पुरानी फाइलें नहीं हटाएं)
नबी काज

तुम्हारा मतलब है -FS -r, है ना?
हिमस्खलन

0

विकल्प का उपयोग करने का -FSविकल्प (या पुरानी जिप फाइल को डिलीट करना), और वस्तुतः मौजूदा जिप फाइल को अधिलेखित करना, zipस्टैडिन के आउटपुट के लिए पूछना और आउटपुट को अपनी पसंद की फाइल पर रीडायरेक्ट करना है:

zip -r - foo >foo.zip

यदि foo.zip मौजूद है, तो इसे शेल पुनर्निर्देशन द्वारा अधिलेखित कर दिया जाएगा, जिसका अर्थ है कि आपको एक नया नया ज़िप फ़ाइल 100% समय, हर बार ip मिलेगा


आपका मतलब है
स्टडआउट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.