आप बस कर सकते हैं:
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")