2012-06-28 13 views
9
zip -r 1.zip /home/username/the_folder 

का हिस्सा रखने यहाँ पर, जब मैं अनज़िप 1.zip, यह /home/username/the_folder, मैं जो भी फ़ोल्डर से से अनज़िप हूँ पैदा करेगा।पिन निरपेक्ष पथ बताते हुए, लेकिन उनमें

मैं पूर्ण पूर्ण पथ बताते हुए ज़िप कैसे कर सकता हूं, लेकिन ज़िप को केवल उस फ़ोल्डर में प्रारंभ करने के लिए फ़ोल्डर संरचना शामिल है, उदाहरण के लिए, /home/username?

इस तरह से मैं जो भी रास्ता चाहता था, वह हो सकता था, अनजिप करें और यह केवल the_folder बनाएगा, और /home/username/the_folder नहीं होगा।

उत्तर

9

उपयोग:

cd path_under_folder_to_zip && \ 
zip -r 1.zip folder_to_zip >/dev/null && \ 
mv 1.zip my_current_path 
+0

cd path_under_folder_to_zip && zip -r my_current_path/1.zip folder_to_zip>/dev/null –

+0

मैकोज़ पर बहुत अच्छा काम करता है :) धन्यवाद। –

5

ज़िप को फ़ाइल निर्दिष्ट करते समय सापेक्ष पथ का उपयोग करें।

cd /home/username 
zip -r 1.zip ./the_folder 

फिर जब आप अनज़िप, यह एक रिश्तेदार पथ पर जो भी फ़ोल्डर आप जब अनज़िप करने में कर रहे हैं शुरू कर सकेंगे।

+0

वह निरपेक्ष पथ उपयोग करने में सक्षम होना चाहता है। कृपया ध्यान दें कि 'जो भी रास्ता मैं चाहता था'। हालांकि आप जो कह रहे हैं वह समझ में आता है। –

1
  1. सूची आइटम

कैसे इस बारे में:

function zipExtraFolder { 
    if [ $# -lt 2 ]; then 
     echo "provide at least two arguments" 
     return 
    fi 
    folder=$2 
    mkdir del 
    echo cp -r `dirname $folder` del 
    cd del 
    echo zip -r ../$1 . 
    cd - 
    rm -rf del 
} 

अपने .bashrc में एक खोल समारोह के रूप में ऊपर परिभाषित करें और आप इसे उपयोग करने के लिए जब भी आप चाहते हैं सक्षम होना चाहिए। उपयोग नीचे की तरह होगा।

zipExtraFolder 1.zip /home/username/the_folder 
+0

मैं वास्तव में उस कोड को नहीं पढ़ सकता, और जब मैं अधिक जटिल ज़िप आदेश बनाना शुरू करता हूं तो इससे समस्याएं नहीं आतीं? –

-1

बस, -j विकल्प का उपयोग OSX पर काम करता है, मैं लिनक्स के बारे में पता नहीं है। इस आदेश

zip -j -r 1.zip /home/username/the_folder

+0

मुझे एक त्रुटि मिलती है, जाहिर है क्योंकि फ़ाइल के दो उदाहरण हैं जो उस फ़ोल्डर के समान नाम के साथ हैं। भले ही वे विभिन्न उप फ़ोल्डरों में हैं। –

+6

मैं भूल गया था, '-j' विकल्प' -r' विकल्प के साथ प्रयोग करते समय व्यावहारिक नहीं है, क्योंकि यह फ़ोल्डर संरचना के बिना मूल फ़ोल्डर में सभी फ़ाइलों को संपीड़ित करता है। – jackjr300

+0

यदि '-j' आपके लिए चेकआउट नहीं करता है [यह उत्तर] (http://superuser.com/a/119661/45285) – czerasz

संबंधित मुद्दे