किसी दिए गए निर्देशिका में ज़िपित संग्रह से केवल एक विशिष्ट फ़ोल्डर कैसे निकालें?


59

किसी दिए गए निर्देशिका में ज़िपित संग्रह से एक विशिष्ट फ़ोल्डर कैसे निकाला जाता है?

मैंने प्रयोग करने की कोशिश की

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

लेकिन वह केवल उस पथ पर फ़ोल्डर बनाता है जिसे मैं चाहता हूं कि वह अनज़िप करे और कुछ न करे।

जवाबों:


60
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

ईएल 6 पर ठीक काम करता है


3
यह ईएल 6 क्या है?
ज़ेल्डा

2
एंटरप्राइज लिनक्स 6 (आरएचईएल 6) - रेड हैट।
स्लम

यह भी काम करता है; इसका मूल रूप से मार्क एडलर के रूप में एक ही जवाब है, लेकिन थोड़ा अलग तरीके से।
एनकाउमी

@ ईनकाउमी माइनस के हवाले से मतभेद है, यह बिल्कुल वैसा ही दिखता है।
कैमिलो मार्टिन

1
@Enkouyami क्योंकि दोहरे उद्धरण में बैकस्लैश एक चरित्र से बच जाता है (माना जाता है कि तारांकन से बच रहा है, लेकिन मुझे लगता है कि यह एक टाइपो है), जबकि एकल उद्धरण में बैकस्लैश की व्याख्या नहीं की गई है। यदि कोई शाब्दिक बैकस्लैश चाहता है, "\\"तो इसका उपयोग किया जाएगा (अन्यथा आपको हमेशा याद रखना होगा कि कौन से अक्षर विशेष बच रहे हैं)। यदि लेखक का मतलब "ग्लॉब कैरेक्टर को उद्धृत करना" (अनावश्यक) है तो यह एक भिन्नता है। किसी भी तरह से एक एकल backslash कि टाइपो है।
कैमिलो मार्टिन

39

प्रयत्न, कोशिश:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
इसे किया? मैं caution: filename not matched: foldername/\*जब मैं चलाने unzip $repozip "$2-master/\*" -d /srv/www/magento/जहां $2ज़िप में फ़ोल्डर का नाम मैं से बाहर सभी फ़ाइलों और फ़ोल्डरों को खींचने के लिए चाहते हैं
jeremy.bass

10
बिना \ _ के काम किया "path/*"
एलेक्स

8
क्या "इन / आर्काइव / फोल्डर / *" की सामग्री को निकालने का एक तरीका है जो "संग्रह / फ़ोल्डर /" में पथ को संरक्षित नहीं करता है? मैं mvबाद में उन फ़ाइलों को प्राप्त करने के लिए उपयोग कर रहा हूं जहां मुझे उनकी आवश्यकता थी।
जेरगिरसुह

6
उसके लिए उपयोग करें -j
मार्क एडलर

4
-jसभी पथ जानकारी स्ट्रिप्स, और सभी फ़ाइलें लक्ष्य फ़ोल्डर में जाती हैं। क्या मार्ग का केवल सामान्य हिस्सा निकालने का एक तरीका है? ज़ीन को अकिन -r
बॉब स्टीन

6

मौजूदा दो उत्तर दोनों सही हैं, लेकिन लक्ष्य निर्देशिका को निर्दिष्ट करने के लिए यह थोड़ा मुश्किल है, जिसे बेहतर स्पष्ट किया जाना चाहिए।

मान लीजिए कि /target/root/मूल unzip कार्रवाई पर लक्ष्य dir है, जैसे:

unzip -qq src.zip -d "/target/root/"

फिर, हमें /target/root/लक्ष्य dir के बाद भी उसी का उपयोग करने की आवश्यकता है, भले ही हम केवल एक विशिष्ट उप-निर्देशिका निकालना चाहते हैं, जिस तरह से अनज़िप काम करता है:

unzip -qq src.zip "sub/dir/*" "/target/root/"

आखिरकार, नियम वास्तव में सरल है, विकल्प के लिए समान लक्ष्य रूट निर्देशिका का उपयोग करें-d

BTW, -qqविकल्प अनज़िप के लिए वास्तव में शांत होना है, इसे हटाने के लिए स्वतंत्र महसूस करें।


FYI करें: मैंने <kbd> unzip -qq 2.3.zip "magento2-2.3 / विक्रेता / *" "विक्रेता /" </ kbd> किया और <kbd> सावधानी: फ़ाइल नाम से मिलान नहीं किया, विक्रेता / `</ kbd>। यह बैश में एक ubuntu इंस्टॉल पर है। मैंने शायद ही कभी अनज़िप किया, शायद कुछ और गलत किया ...
क्रिस के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.