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


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

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

zip -r zipfile.zip directory

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

zip -r zipfile.zip directory -x .*

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


189
2017-08-27 18:01


मूल




जवाब:


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

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

98
2017-08-27 19:27



आपके उत्तर के लिए धन्यवाद। आदेश (find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) अपेक्षा से अधिक लंबा है, लेकिन यह ठीक काम करता है। उपनिर्देशिका भी शामिल हैं, इसलिए +1 और एक स्वीकृत उत्तर :-) - Martin Thoma


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

sudo apt-get install zip

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

zip -r compressed_filename.zip foldername

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

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

69
2017-08-11 06:28



एक साथी उबंटू उपयोगकर्ता की मदद करने के आपके प्रयास के लिए धन्यवाद। कृपया ध्यान रखें कि एक नए उत्तर में स्वीकृत उत्तर को दोबारा बताते हुए बस अव्यवस्था में जोड़ दिया जाता है और हटाने के लिए ध्वजांकित होने की उच्च संभावना होती है। - hmayag


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

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

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

rinzwind@discworld:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
rinzwind@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%)

52
2017-08-27 19:17



मुझे नहीं लगता कि आपका अंतिम कथन सही है। .* खोल से विस्तारित हो जाएगा। - hammar
मुझे लगता है कि यह सही होने की संभावना है लेकिन मैंने इसे हटा दिया (इसके बारे में निश्चित नहीं) :) - Rinzwind
यह काम नहीं किया। .Svn-निर्देशिका जोड़े गए थे - Martin Thoma
@moose बहिष्कार पैटर्न पूर्ण पथ से मेल खाता है, केवल फ़ाइल बेस नाम नहीं, इसलिए आपको बाहर निकलना होगा */.* साथ ही साथ .* (*/ निर्देशिकाओं के किसी भी खाली खाली अनुक्रम से मेल खाता है)। - Gilles
यह कुछ भी बदले बिना चलता है! सबसे बढ़िया उत्तर। - Whitecat


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

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

8
2017-11-01 03:19





साथ शुरू होने वाले सभी फ़ोल्डरों को छोड़कर उदाहरण। :

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

बेहतर संपीड़न लेकिन धीमा:

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

8
2018-05-21 16:51





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

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

5
2018-05-08 16:49



@downvoter: क्या गलत है, ऐसा लगता है कि यह मेरे लिए काम कर रहा है। - jobin
के साथ ही समस्या है रिनज़विंड का मूल जवाब (अब सही): आप उपनिर्देशिका को शामिल नहीं कर रहे हैं। और जैसा कि रिनज़विंड ने नोट किया, आपको वाइल्डकार्ड उद्धृत करने की आवश्यकता है, अन्यथा खोल उन्हें विस्तारित करेगा। - Gilles


कुछ फ़ाइल एक्सटेंशन को छोड़कर डीआईआर को ज़िपित करते समय:

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

4
2017-12-08 17:49





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

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%)

3
2018-02-15 08:45