2009-11-24 8 views

उत्तर

51

आप उपयोग कर सकते हैं gzip *


नोट का प्रयास करें:

  • यह व्यक्तिगत रूप से प्रत्येक फ़ाइल को ज़िप जाएगा और DELETE मूल।
  • मूल फ़ाइलों को रखने के लिए -k (--keep) विकल्प का उपयोग करें।
  • यदि आप फ़ाइलों की एक बड़ी संख्या है खोल
  • की सीमाओं के कारण काम नहीं कर सकता समानांतर see @MarkSetchell's answer below में gzip चलाने के लिए।
2

एक पाश

$ for file in *; do gzip "$file"; done 
13

आप रिकर्सिवली हर फ़ाइल gzip करना चाहते हैं, तो आप xargs के पाइप को खोजने के इस्तेमाल कर सकते हैं:

$ find . -type f -print0 | xargs -0r gzip 
+10

+ xargs खोजने की कोई आवश्यकता नहीं है। Gzip खुद को रिकर्सन संभाल सकता है: 'gzip -9r .' – Idelic

+2

हमेशा की तरह,' ढूंढें। - प्रकार f -print0 | xargs -0r gzip' बेहतर है। – musiphil

+1

'gzip *' के बराबर के लिए, आपको 'find' में '-मैक्सडेपथ 1' की भी आवश्यकता हो सकती है। – musiphil

6

आसान और बहुत तेजी से जवाब यह है कि समानांतर में अपने सभी सीपीयू कोर का उपयोग करेगा:

parallel gzip ::: * 
+0

एह, इस उत्तर को और अधिक उन्नयन की जरूरत है! – zx8754

+1

@ zx8754 ** जीएनयू समानांतर ** एक शानदार उपकरण है जिसका उपयोग इस दुनिया में कहीं अधिक किया जाना चाहिए जहां सीपीयू केवल अधिक गति के बजाय अधिक कोर प्राप्त कर रहे हैं। उदाहरण के बहुत सारे उदाहरण हैं कि हम सभी को पढ़ने के लिए 10 मिनट लगने के लिए अच्छा लगेगा ... https://www.gnu.org/software/parallel/parallel_tutorial.html –

+0

समानांतर के बारे में जानते हैं, लेकिन इसका उपयोग करना भूल जाते हैं! स्वीकार किए गए उत्तर को चलाएं और फिर अपना जवाब देखने के लिए नीचे स्क्रॉल करें ... कई घंटों बचाए! हो सकता है कि आपकी टिप्पणी को आपके उत्तर में संपादित करने का अच्छा विचार हो? – zx8754

7

सात सालों के बाद, इस अत्यधिक उत्साहित टिप्पणी के पास अभी भी अपना पूर्ण उत्तर नहीं है, इसलिए मैं इसे अब प्रचारित कर रहा हूं:

इस पर वर्तमान में स्वीकृत उत्तर के दो फायदे हैं: यदि कोई उपनिर्देशिकाएं हैं तो यह रिकर्सिवली काम करती है, और Argument list too long से यह विफल नहीं होगा यदि फाइलों की संख्या बहुत बड़ी है।

संबंधित मुद्दे