लिनक्स में फाइलों की सूची को ज़िप कैसे करें


18

मेरे पास कई फाइलें हैं जिन्हें मुझे एक ही निर्देशिका में ज़िप करने की आवश्यकता है। मैं निर्देशिका में सभी फ़ाइलों को ज़िप नहीं करना चाहता, लेकिन केवल एक निश्चित क्वेरी से मेल खाते हैं।

मैंने किया

grep abc file-* > out.txt 

प्रत्येक फ़ाइल में "एबीसी" के सभी उदाहरणों के साथ एक फ़ाइल बनाने के लिए। मुझे खुद फाइलें चाहिए। कैसे मैं केवल उन फ़ाइलों को ज़िप करने के लिए बैश बता सकता हूं?


वाइल्डकार्ड काम नहीं करते? क्यों? अगर मैं पूछ सकता हूँ ...
jherran

@jherran मैं निर्देशिका में सभी फ़ाइलों को ज़िप नहीं करना चाहता, केवल एक निश्चित क्वेरी से मेल खाते हैं। मैंने प्रत्येक फ़ाइल में "एबीसी" के grep abc file-* > out.txtसभी उदाहरणों के साथ एक फ़ाइल बनाने के लिए किया । मुझे खुद फाइलें चाहिए।
जॉन मैंगुआल

@ जागरण का मतलब क्या होता है zip ZipFile.zip file-*, जो इसे करने का स्पष्ट तरीका है। आपको एक मध्यवर्ती फ़ाइल की आवश्यकता तभी होगी जब आप findविभिन्न खोजों से जटिल या फ़ाइल सूचियों का एक संयोजन का उपयोग कर रहे थे ।
AFH

जवाबों:


33

बहुत आसान:

zip archive -@ < out.txt

यही है, अगर आपकी out.txtफ़ाइल में प्रति पंक्ति एक फ़ाइल नाम है। यह out.txtएक नामक संग्रह से सभी फ़ाइलों को जोड़ देगा archive.zip

-@विकल्प बनाता है zipstdin से पढ़ें।

यदि आप एक अस्थायी out.txtफ़ाइल बनाना छोड़ना चाहते हैं , तो आप grepफ़ाइल नाम प्रिंट करने की क्षमता का भी उपयोग कर सकते हैं । -rपुनरावर्ती खोज को सक्षम करता है (आपके मामले में आवश्यक नहीं हो सकता है) और -lकेवल फ़ाइल नाम प्रिंट करता है:

grep -rl "abc" file-* | zip archive -@

अच्छी तरह से काम करता है, सिवाय मेरे पास एक सूची फ़ाइल है जहां फ़ाइल नामों में स्थान हैं। मैंने दोनों को `` के साथ भागने और उन्हें बचने की कोशिश की, एक बार उद्धरण में और एक बार बिना फ़ाइल नाम (एक पंक्ति - एक फ़ाइल नाम) के आसपास उद्धरण के बिना। अब तक कुछ भी काम नहीं किया।
थॉमस डब्ल्यू।

2
मैंने इसे '\' के साथ काम किया और रिक्त स्थान और फ़ाइल और निम्न में कोई उद्धरण नहीं दिया:cat out.txt | while read line ; do xargs zip archive.zip $line ; done
थॉमस डब्ल्यू।

अगर आप इसी तरह के नामों वाली फाइलों को जिप करना चाहते हैं तो आप कोशिश कर सकते हैंzip archive.zip $(ls common_name*)
chepe263

@ chepe263 यह टूट जाता है अगर फाइलों में उनके रास्ते में जगह होती है। यह आम तौर पर पार्स एलएस आउटपुट के लिए हतोत्साहित किया जाता है।
स्लॉक

मैक पर किसी और के लिए जो यहां खोज इंजन इंडेक्सिंग के सौजन्य से घाव -@करता है , विकल्प वाक्यविन्यास 10.16 के रूप में ठीक काम करता है, भले ही मैन पेज में अभी भी भाषा शामिल हैnot on MacOS
एडन माइल्स

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.