मैं अपनी वर्किंग डायरेक्टरी के बजाय टार्गेट डायरेक्टरी के सापेक्ष एक ज़िप फाइल में डायरेक्टरी कैसे बनाते हैं


25

मैं एक स्क्रिप्ट से ज़िप कमांड को बुला रहा हूं जहां मैं डायरेक्टरी नहीं बदल सकता। मुझे data/kit123/उस निर्देशिका से सामान की एक ज़िप फ़ाइल बनाने की ज़रूरत है जिसमें डेटा रहता है, लेकिन मैं चाहता हूं कि ज़िप की सामग्री केवल सामग्री की हो kit123, जिसके सापेक्ष पथ हैं kit123

यह निर्देशिका संरचना है

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

मेरी स्क्रिप्ट myworkingdir में चलती है और निर्देशिकाओं को बदल नहीं सकती है।

अगर मैं बुलाऊं

zip -r kit123.zip data/kit123

फिर ज़िप फ़ाइल में संरचना होगी

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

लेकिन मैं चाहता हूं कि यह हो

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

क्या कोई ज़िप विकल्प है जिसे मैं इसे पूरा करने के लिए उपयोग कर सकता हूं? यह अजीब लगता है कि यह मेरी कार्यशील निर्देशिका पर निर्भर होना चाहिए

मुझे पता है कि यह -जे नहीं है। कि किट की संरचना में नष्ट हो जाता है


बाह, कोई बात नहीं मैंने यह पता लगाने के लिए कि कैसे (पायथन में) मैं सिर्फ एक खराब संगठित अनुमति थी। मैं अभी भी जानना चाहूंगा कि क्या ज़िप में ऐसा कोई विकल्प है।
नाथन

पायथन इसकी zipfile.write(arcname=अनुमति देता है btw: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.write
Ciro Santilli 新疆 b b 六四 事件 事件 事件

जवाबों:


18

जैसा कि आप टिप्पणियों में ध्यान देते हैं, अब आप जानते हैं कि अपनी स्क्रिप्ट के साथ निर्देशिका कैसे बदलनी है, मैं रिश्तेदार रास्तों के बारे में ज़िप के साथ स्थिति की व्याख्या करूंगा।

टर्मिनल खोलना और cdकरना शायद सबसे आसान है kit123; आपको लक्ष्य निर्देशिका को अपनी कार्यशील निर्देशिका बनाना है- आप अपने घर की निर्देशिका के आधार से कमांड नहीं चला सकते हैं या /home/$USER/..यदि आप -jविकल्प का उपयोग करते हैं तो यह सभी रास्तों को उठाएगा, यह सभी रास्तों को बंद कर देगा, जैसे कि isn वास्तव में टार विकल्प के बराबर नहीं है --stripजिसके साथ पथ हटाने के विभिन्न स्तरों को निर्दिष्ट किया जा सकता है।

तो कृपया अपने लक्ष्य निर्देशिका ( kit123) के लिए सीडी और दर्ज करें:

zip -r kit123.zip *

यह वर्तमान निर्देशिका ( ) में -rसभी ( *) फ़ाइलों और निर्देशिकाओं की फ़ाइलों को संरक्षित करेगा kit123(और -pजब तक -jविकल्प मौजूद नहीं है, तब तक स्वचालित रूप से संरक्षित हैं) , निर्देशिका संरचना आपकी इच्छानुसार होगी। Kit123और सबफ़ोल्डर ( kitpart1) अपनी फ़ाइलों के साथ मौजूद होंगे:

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

आप ज़िप फ़ाइल की सामग्री की जाँच कर सकते हैं unzip -l zipfile.zip

ऑनलाइन उपलब्ध अन्य विकल्पों के बारे में अधिक जानकारी के लिए zip, देखें man zipऔर उबंटू मैनपेज को ऑनलाइन देखें

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