7Zip - कमांड लाइन: वाइल्डकार्ड पैटर्न द्वारा फ़ोल्डर (फ़ोल्डर) बाहर निकालें?


107

कोई भी विचार कैसे एक कमांड-लाइन 7zip कमांड से एक वाइल्ड-कार्डेड पथ को बाहर करना है?

मैं कुछ इस तरह कर रहा हूँ:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

और "FolderToArchive" के नीचे पाए गए किसी भी \bin\*.*या \obj\*.*फ़ोल्डर को बाहर करना चाहेंगे ।

फ़ाइलों को बाहर करने के लिए, आप -xपैरामीटर का उपयोग कर सकते हैं । मदद फ़ाइल का उपयोग करने के लिए यह उदाहरण देता है -x:

7z a -tzip archive.zip *.txt -x!temp.*

यह एक फ़ाइल को बाहर करने के लिए बहुत अच्छा है। लेकिन, फिर से, मैं वाइल्डकार्ड-निर्दिष्ट फ़ोल्डर को बाहर करना चाहूंगा। मेरे "FolderToArchive" के अंतर्गत एक से अधिक फ़ोल्डर हैं, उन फ़ोल्डरों के अंतर्गत bin\और obj\फ़ोल्डर हो सकते हैं या नहीं भी हो सकते हैं। मैं इन्हें संग्रह में शामिल नहीं करना चाहूंगा।

मैंने पैटर्न की तरह कोशिश की है

-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\\bin\\*
-x!\\bin\\*.*

कोई भी bin\फ़ोल्डर को बाहर करने के लिए प्रतीत नहीं होता है । क्या यह केवल 7zip की सीमा है?

जवाबों:


131

बिन और obj फ़ोल्डरों को फिर से बाहर करने के लिए आप कमांड का उपयोग कर सकते हैं:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj

5
बाकी सभी के लिए: यदि आप रूट डायरेक्टरी में केवल फाइलों को अनदेखा करना चाहते हैं, तो उपयोग करें -xr0!*.zip- कम से कम मैं इसके बिना काम नहीं कर सकता r0
ओलिवर

6
इसके अलावा, यदि यह एक लिनक्स / यूनिक्स कमांड लाइन में है, तो आपको एक सिंगल '-x!$RECYCLE.BIN'ड्राइव के रीसायकल बिन को बाहर करने के लिए शेल द्वारा प्री-प्रोसेसिंग नहीं जोड़ने के लिए सिंगल कोट्स में संलग्न करना पड़ सकता है ।
thanosa75

15

बग से बचने के लिए, -r या -xr का सावधानीपूर्वक उपयोग करें।

मान लें कि आपके पास निर्देशिकाएं हैं:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

और कमांड चलाएं:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

आर्काइव में आपको क्या मिला ।z:

.\path2\src
.\path5\src

यही है, .\path2\और आर्काइव .7 में शीर्ष फ़ोल्डर.\path5\ बन गया है , और दोनों निर्देशिकाओं को बाहर रखा गया है।bin

-x केवल संग्रह में शीर्ष फ़ोल्डर के सापेक्ष पथ / फ़ाइल नाम का समर्थन करता है ।

इसलिए, यदि आप केवल बाहर करना चाहते हैं .\path1\path2\bin, लेकिन अन्य सभी 'बिन' निर्देशिकाओं को शामिल करने के लिए, कमांड इस तरह होनी चाहिए:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

मैंने -x में पूर्ण पथ का उपयोग करने की कोशिश की, लेकिन कभी सफल नहीं हुआ।


अपडेट करें:

-spfलिनक्स के लिए 7z में एक विकल्प है जो निरपेक्ष पथ के साथ काम करता है।

मार्को के अनुसार , -spf7-ज़िप 15.14 से विंडोज पर भी उपलब्ध है


2
नोट: कम से कम उबंटू पर आपको सबसे अच्छा सलाह दी जाती है कि उन सभी -x शब्दों को एकल उद्धरण '-x!path2\bin'में न रखें, शेल प्रतिस्थापन में न जाएं ... (आपको बहुत लंबा, वाक्यविन्यास रूप से गलत "कमांड" ...)
फ्रैंक नॉक

@FrankNocke की टिप्पणी का संदर्भ लेने के लिए, आप इसे फ़ोल्डर नामों में डॉट्स की अनुमति देने के लिए खिड़कियों पर भी कर सकते हैं:'-xr!\.foo'
डॉनबेकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.