2013-10-29 7 views
6

के नीचे अनजिप करें हाय मुझे एक फ़ाइल को अनजिप करना है जिसमें निर्देशिका हो सकती है और मैं उस निर्देशिका के भीतर सबकुछ बाहर करना चाहता हूं, मैंने बहुत सारे विकल्पों की कोशिश की और यहां भी देखा, लेकिन ऐसा प्रतीत नहीं होता कोई अच्छा समाधान खोजने के लिए।लिनक्स फ़ोल्डर में सबकुछ को छोड़कर और

ये ज़िप फ़ाइल की सामग्री को कर रहे हैं: को अपवर्जित फ़ोल्डर अज्ञात है की गहराई कृपया ध्यान दें, लेकिन हम मैं इस आदेश है, जो केवल यह भीतर फ़ाइलों को अलग करने की कोशिश की सब कुछ बाहर करने के लिए

$unzip -l patch2.zip 
Archive: patch2.zip 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 2013-10-29 17:42 EXCLUDE/ 
     0 2013-10-29 17:24 EXCLUDE/inner/ 
     0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt 
     0 2013-10-29 15:45 EXCLUDE/file.txt 
     0 2013-10-29 15:44 patch.jar 
     0 2013-10-29 15:44 system.properties 
---------      ------- 
     0      6 files 

है, लेकिन फ़ोल्डर और इसकी सामग्री नहीं:

$unzip -l patch2.zip -x EXCLUDE/* 
Archive: patch2.zip 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 2013-10-29 17:42 EXCLUDE/ 
     0 2013-10-29 17:24 EXCLUDE/inner/ 
     0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt 
     0 2013-10-29 15:44 patch.jar 
     0 2013-10-29 15:44 system.properties 
---------      ------- 
     0      5 files 

सहायता के लिए धन्यवाद।

उत्तर

8

आपको बाहर पैटर्न को उद्धृत करने की आवश्यकता है ताकि यह unzip पर जा सके। अन्यथा इसे unzip पर जाने से पहले खोल द्वारा विस्तारित किया जाएगा।

प्रयास करें:

unzip patch2.zip -x "EXCLUDE/*" 
+0

उत्तर के लिए +1 क्योंकि यह ओपी के प्रश्न के करीब है। मेरा खुद का सिर्फ "अच्छा जानना" वैकल्पिक ^^ है (जो अब थोड़ा ज्ञात है, जबकि यह शुरुआती लिनक्स दिनों में काफी प्रसिद्ध था) –

+0

धन्यवाद यह पूरी तरह से काम करता है। क्या आप कृपया बता सकते हैं कि इसका मतलब क्या है "यह अनजिप करने के लिए पारित किया जाता है। अन्यथा इसे अनजिप करने से पहले खोल द्वारा विस्तारित किया जाएगा"। – Ravi

+1

@Ravi [Globbing] के बारे में पढ़ें (http://tldp.org/LDP/abs/html/globbingref.html) जो तब होता है जब शैल वाइल्डकार्ड पैटर्न को फ़ाइल नामों में परिवर्तित करता है। उदाहरण के लिए, जब आप 'echo *' चलाते हैं, तो खोल फ़ाइल नामों की सूची में "विस्तारित" '*' उदा। 'echo' निष्पादित करने से पहले 'file1',' file2' आदि। नतीजतन, 'echo * 'echo file1 file2' बन जाता है। 'Echo' प्रोग्राम वाइल्डकार्ड को कभी नहीं देखता है, यह केवल तर्क' file1' और 'file2' को देखता है। लेकिन, यदि आप पैटर्न उद्धृत करते हैं, तो 'echo "*" '', खोल इस विस्तार को निष्पादित नहीं करेगा और पैटर्न को प्रोग्राम के लिए एक तर्क के रूप में पारित किया जाएगा जो इसे समझ सकता है हालांकि यह चुनता है। – dogbane

0

@dogbane जवाब सही है।

लेकिन मैं अभी भी जोड़ने के एक और [मुझे आशा है कि] interresting विकल्प, जैसा कि आप लिनक्स पर हैं:

mc 

(उर्फ: आधी रात कमांडर)

यह प्रारंभ करें, और उसके बाद: सही पैनल पर, जहां आप अपनी फाइलों को समाप्त करना चाहते हैं, वहां नेविगेट करें, और बाएं पैनल पर, ज़िप फ़ाइल "अंदर" नेविगेट करें, और उस पहले स्तर पर + उन चीजों को कॉपी करें जिन्हें आप चाहते हैं (यानी, सभी का चयन करें, और EXCLUDE फ़ोल्डर को अचयनित करें उदाहरण)

mc बहुत लचीला और अच्छा है विशेष रूप से टैर/अनार/ज़िप/स्थानांतरित/हटाएं/फ़ाइलों का नाम बदलने के लिए ... (विंडोज़ पर, समकक्ष कुल कमांडर है, और मैं बैकअप और मूल को सिंक में रखने के लिए अक्सर "सिंक्रनाइज़" विकल्प का उपयोग करता हूं)। यह आपको अभिलेखागारों पर नेविगेट करने की अनुमति देता है जैसे कि वे असम्पीडित थे (वास्तविक डिकंप्रेशन को केवल "नेविगेटिंग" भाग में कम करने की कोशिश कर रहे हैं ताकि आप उन्हें दो बार असम्पीडित न करें)।

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