मैं छिपी हुई फ़ाइलों के बिना टर्मिनल के माध्यम से पूरी निर्देशिका का ज़िप संग्रह कैसे बना सकता हूं?

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

मुझे पता है कि मैं इस तरह एक निर्देशिका का एक ज़िप संग्रह बना सकता हूं:

zip -r zipfile.zip directory

मुझे यह भी पता है कि मैं-एक्स विकल्प के साथ फ़ाइलों को बाहर कर सकता हूं, इसलिए मैंने सोचा कि यह काम कर सकता है:

zip -r zipfile.zip directory -x .*

यह काम नहीं किया । सभी छिपी हुई निर्देशिकाएं अभी भी ज़िप-फ़ाइल में थीं ।

सबसे पहले यदि आपने ज़िप स्थापित नहीं किया है तो इसे पहले निम्नानुसार स्थापित करें:

sudo apt-get install zip

फिर बस एक ज़िप फ़ाइल बनाने के लिए:

zip -r compressed_filename.zip foldername

यदि आप छिपी हुई फ़ाइलों को बाहर करना चाहते हैं:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@

ज़िप संग्रह से फ़ाइलों को छोड़कर(से लिया गया http://osxdaily.com/2013/04/30/how-to-exclude-files-from-a-zip-archive/)

ज़िप संग्रह बनाते समय फ़ाइल बहिष्करण की मूल बातें चारों ओर केंद्रित होती हैं -x ध्वज, जिसका उपयोग किसी विशिष्ट नाम या पैटर्न से मेल खाने वाले संग्रह से फ़ाइलों को बाहर करने के लिए किया जाता है । यह सबसे बुनियादी है, यह इस तरह दिखेगा:

zip archive.zip files -x "ExcludeMe"

मतलब आप एक फ़ाइल को बाहर कर सकते हैं, कहें कि इसका नाम "नोथैंक्स" है । jpg"

zip archive.zip images/ -x "Nothanks.jpg"

आइए कुछ विशिष्ट उदाहरणों को कवर करें जहां यह उपयोगी है ।

बहिष्कृत करें । ज़िप अभिलेखागार से डीएस_स्टोर फाइलें

यह आमतौर पर अदृश्य मैक मेटाडेटा को रोक देगा .DS_Store ज़िप संग्रह में शामिल होने से फ़ाइलें, जो डिफ़ॉल्ट रूप से बंडल की जाती हैं:

zip -r archivename.zip archivedirectory -x "*.DS_Store"

यदि निर्देशिका में उपनिर्देशिकाएं शामिल हैं, तो आप उपनिर्देशिकाओं से डीएस_स्टोर फ़ाइलों को बाहर करने के लिए उस कमांड की एक और भिन्नता का उपयोग करना चाहेंगे:

zip -r archive.zip directory -x "*/\.DS_Store"

नोट: सभी गोले को इस कमांड के ठीक से काम करने के लिए कोटेशन की आवश्यकता नहीं होती है, लेकिन बैश शेल (ओएस एक्स के लिए डिफ़ॉल्ट) में आपको वाइल्डकार्ड और पैटर्न को छोड़कर उद्धरणों का उपयोग करने की आवश्यकता होगी ।

ज़िप संग्रह से विशिष्ट फ़ाइल प्रकारों को बाहर निकालें

वाइल्डकार्ड के साथ, आप एक्सटेंशन पर ध्यान केंद्रित करके एक निश्चित प्रकार की सभी फाइलों को भी बाहर कर सकते हैं । उदाहरण के लिए, यह कमांड एक संपूर्ण निर्देशिका को ज़िप करेगा, किसी को भी घटा देगा .jpg फ़ाइलें:

zip -r archive.zip directory -x "*.jpg"

इसे किसी फ़ाइल नाम में मिलान किए गए किसी विशिष्ट फ़ाइल एक्सटेंशन या पैटर्न के लिए संशोधित किया जा सकता है ।

बहिष्कृत करें .git या .एक ज़िप संग्रह से एसवीएन निर्देशिका

एक निर्देशिका ज़िप, शून्य से .git और यह सामग्री है:

zip -r zipdir.zip directorytozip -x "*.git*"

एक फ़ोल्डर ज़िप, सहित बिना .svn निर्देशिका:

zip -r zipped.zip directory -x "*.svn*"

ज़िप संग्रह से सभी छिपी हुई फ़ाइलों को बाहर निकालें

चूंकि पैटर्न और वाइल्डकार्ड का उपयोग किया जा सकता है, आप किसी भी या सभी अदृश्य फ़ाइलों और फ़ोल्डरों को भी बाहर कर सकते हैं जो एक अवधि के साथ उपसर्ग करके बनाए जाते हैं, चाहे वह एक निर्देशिका हो .svn या एक व्यक्तिगत फ़ाइल की तरह .bash_profile या .htaccess.

zip -r archivename.zip directorytozip -x "*.*"

या सभी उपनिर्देशिकाओं से सभी अदृश्य फ़ाइलों को बाहर करने के लिए:

zip -r archive.zip directory -x "*/\.*"

यह छिपी हुई निर्देशिकाओं में छिपी हुई फ़ाइलों को भी बाहर करता है:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

जोड़ें " को .* (अन्यथा, आपका खोल फैलता है .* वर्तमान निर्देशिका में डॉट फ़ाइलों के लिए), और उपनिर्देशिकाओं में छिपी हुई फ़ाइलों को भी बाहर करें:

zip -r zipfile.zip . -x ".*" -x "*/.*"

यह एक के साथ शुरू फ़ाइलों में परिणाम होगा . अपनी ज़िप फ़ाइल में नहीं जोड़ा जाना चाहिए ।

rinzwind@discworld:~/tmp$ ls -ladrwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmpdrwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmprinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x .*adding: .tmp/ (stored 0%)adding: tmp/ (stored 0%)rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"updating: tmp/ (stored 0%)

शुरुआत करने वाले सभी फ़ोल्डरों को बाहर करने के लिए उदाहरण । :

tar cvpzf folder.tgz folder/ --exclude '.*'

बेहतर सेक लेकिन धीमा :

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'

इसमें सभी शामिल हैं" । "निर्देशिकाएँ, उपनिर्देशिकाएँ, और" । "निर्देशिका के भीतर फ़ाइलें या निर्देशिका । ..अनिवार्य रूप से पहला उत्तर लेकिन शीर्ष स्तर शामिल है" । "फ़ाइलें।

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

सही विधि होगी:

zip -r zipfile.zip directory -x directory/.*

जबकि zipping dirs को छोड़कर कुछ फ़ाइल एक्सटेंशन:

$ cd /path/to/dir$ zip -r dir.zip . -x "*.log" -x "*.cache"

निर्देशिका में छिपे हुए फ़ोल्डर और फ़ाइलों के बिना:

zip -r zipfile.zip directory/*

निर्देशिका:

|── .git│   ├── src│   └── Work.file├── .test│   └── .file└── test.file
$ zip -r zipfile.zip directory/*adding: directory/src/ (stored 0%)adding: directory/src/Work.file (stored 0%)adding: directory/test.file (stored 0%)