Ви можете просто зробити:
gzip *
gzip скаже вам, що він пропускає файли, які вже мають .gz
закінчення.
Якщо це повідомлення стає таким, яким ви можете скористатися:
gzip -q *
Те, що ви спробували, не вийшло, оскільки gzip
не читає назви файлів для стиснення зі stdin, для цього вам доведеться використовувати:
ls | grep -v gz | xargs gzip
Ви будете виключати файли з шаблоном в gz
будь-якому місці імені файлу, а не лише в кінці. Also Також ви повинні взяти до уваги, що синтаксичний аналіз виводу з ls
файлів небезпечний, якщо у вас є назви файлів з пробілами, новинками тощо.
Більш чисте рішення, не покладаючись на gzip
пропуск файлів із .gz
закінченням, також обробляє нестиснені файли у підкаталогах:
find . -type f ! -name "*.gz" -exec gzip {} \;
¹ Як izkata
прокоментував: використовуючи .gz
один , щоб поліпшити це, не буде працювати. Вам потрібно буде використовувати grep -vF .gz
або grep -v '\.gz$'
. Це все ще залишає небезпеку обробки ls
виходу
$
щоб було зрозуміліше. І ви все.
одно не уникнули , тому лишеgz
gz