आप बस कर सकते हैं:
gzip *
gzip आपको बताएगा कि यह उन फ़ाइलों को छोड़ देता है जिनके पास पहले से ही .gz
समाप्त है।
यदि वह संदेश आपके उपयोग करने के तरीके में मिलता है:
gzip -q *
आपने जो प्रयास किया वह काम नहीं आया, क्योंकि gzip
स्टड से संपीड़ित करने के लिए फ़ाइलों के फ़ाइलनाम को नहीं पढ़ा है, इसके लिए आपको काम करना होगा:
ls | grep -v gz | xargs gzip
आप gz
फ़ाइल के नाम में कहीं भी पैटर्न के साथ फ़ाइलों को बाहर करेंगे , न कि केवल अंत में। आपको यह भी ध्यान रखना होगा कि ls
रिक्त स्थान के पार्सिंग खतरनाक है, जब आपके पास रिक्त स्थान, newlines, आदि के साथ फ़ाइल नाम हैं, शामिल हैं।
एक और अधिक स्वच्छ समाधान, gzip
एक .gz
समाप्ति के साथ फ़ाइलों को छोड़ने के लिए निर्भर नहीं है, जो उपनिर्देशिकाओं में गैर-संकुचित फ़ाइलों को भी संभालता है:
find . -type f ! -name "*.gz" -exec gzip {} \;
¹ जैसा कि izkata
टिप्पणी की गई: .gz
इसे सुधारने के लिए अकेले उपयोग करना, काम नहीं करेगा। आपको उपयोग करने की आवश्यकता होगी grep -vF .gz
या grep -v '\.gz$'
। यह अभी भी प्रसंस्करण ls
के उत्पादन के खतरे को छोड़ देता है
$
ताकि यह स्पष्ट हो। और आप किसी.
भी तरह से बच नहीं गए , इसलिए यह केवल उन फ़ाइलों को बाहर करने के लिए जा रहा है जो शुरू होती हैंgz
(क्योंकि उनके पास "पहले कोई भी चरित्र नहीं हैgz
")