2012-11-05 18 views
18

में ज़िप मैं फ़ाइलों को खोज करने के लिए करने की कोशिश की और उन्हें निम्न commmandमैं फ़ाइलों के लिए कैसे खोज और उन्हें एक ज़िप फ़ाइल

find . regexpression -exec zip {} \; 

साथ ज़िप लेकिन यह काम नहीं कर रहा जा सकता है। मैं यह कैसे कर सकता हूँ?

उत्तर

40

आदेश प्रत्येक फ़ाइल पर जिप अलग से चलेंगे का उपयोग करें, इस प्रयास करें:

find . -name <name> -print | zip name.zip [email protected] 

[email protected] ज़िप बताता इनपुट से फ़ाइलों को पढ़ने में, आदमी zip(1) से:

- @ फ़ाइल सूचियों। यदि फ़ाइल सूची को - @ [मैकोज़ पर नहीं] के रूप में निर्दिष्ट किया गया है, तो ज़िप कमांड लाइन के बजाय मानक इनपुट से इनपुट फ़ाइलों की सूची लेता है।

+0

क्या आप इसे समझा सकते हैं - @ प्रतीक? – LOGAN

+0

@LOGAN हां, अगर – iabdalkader

+0

@LOGAN अपडेट करें तो यह जांचें कि क्या आपका प्रश्न उत्तर देता है, तो कृपया उत्तर को स्वीकार करें। – iabdalkader

12

आप भी अपनी खोज आदेश के परिणाम के रूप नाम प्रदान कर सकते हैं:

zip name.zip `find . -name <name> -print` 

यह खोल प्रयोग कर रहे हैं की एक विशेषता है। यह निर्धारित करने के लिए कि आपका खोल कैसे संभालता है, आप "बैकटिक्स" की खोज कर सकते हैं।

+0

को ठीक से काम कर सकते हैं जैसा कि मैंने उम्मीद की थी। – ferdynator

6

आपकी प्रतिक्रिया करीब है, लेकिन यह बेहतर काम कर सकते हैं:

find -regex 'regex' -exec zip filname.zip {} + 

कि एक ज़िप filename.zip बुलाया फ़ाइल में सभी मिलान फ़ाइलें डाल देंगे। आपको फ़ाइल नाम (जैसे लाइन ब्रेक) में विशेष वर्णों के बारे में चिंता करने की ज़रूरत नहीं है, जो आप परिणामों को पाइप करते हैं तो आप करेंगे।

+0

प्लस साइन के साथ अच्छी नौकरी। मैं हमेशा भूल जाता हूं कि 'ढूंढ' ऐसा कर सकता है। – jheddings

+0

क्या करें? + साइन – aliopi

+2

@aliopi + के साथ प्रत्येक फ़ाइल के लिए एक बार आदेश निष्पादित करने के बजाय {} को सभी फ़ाइल नामों से प्रतिस्थापित करने का मतलब है। –