सवाल 7 ज़िप - कमांड लाइन: वाइल्डकार्ड पैटर्न द्वारा फ़ोल्डर को बहिष्कृत करें?


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

मैं यह कुछ कर रहा हूँ:

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

और किसी को बाहर करना चाहते हैं \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\\*.*

कोई भी बाहर निकलने लगते हैं। क्या यह बस 7zip की एक सीमा है?


97
2018-01-18 15:37


मूल




जवाब:


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

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

117
2018-01-18 15:53



हर किसी के लिए: यदि आप रूट निर्देशिका में केवल फाइलों को अनदेखा करना चाहते हैं, तो उपयोग करें -xr0!*.zip - कम से कम मैं इसे बिना काम करने के लिए मिल सकता है r0। - Oliver
साथ ही, यदि यह लिनक्स / यूनिक्स कमांड लाइन में है, तो आपको एकल कोट्स में संलग्न होना पड़ सकता है, ताकि खोल द्वारा प्री-प्रोसेसिंग न जोड़ा जा सके, उदा। '-x!$RECYCLE.BIN' बाहरी ड्राइव के रीसायकल बिन को बाहर करने के लिए। - thanosa75


बग से बचने के लिए, ध्यान से -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

आपको संग्रह 7z में क्या मिला है:

.\path2\src
.\path5\src

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

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

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

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

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


अद्यतन करें:

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

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


11
2018-03-01 10:27



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