Используйте gzip для сжатия файлов в каталоге, кроме уже существующих .gz-файлов

У меня есть каталог журналов, который я бы хотел настроить для сжатия с помощью gzip . Проблема в том, что я не хочу повторно сжимать журналы, которые я уже сжимал.

Я пробовал использовать ls | grep -v gz | gzip ls | grep -v gz | gzip ls | grep -v gz | gzip , но это, похоже, не работает.

Есть ли способ сделать это? В основном я хочу, чтобы gzip каждый файл в каталоге, который не заканчивается на .gz.

One Solution collect form web for “Используйте gzip для сжатия файлов в каталоге, кроме уже существующих .gz-файлов”

Вы можете просто сделать:

 gzip * 

gzip скажет вам, что он пропускает файлы, которые уже имеют конец .gz .
Если это сообщение попадает в путь, вы можете использовать:

 gzip -q * 

То, что вы пробовали, не сработало, потому что gzip не читает имена файлов, которые нужно сжать из stdin, для этого вам придется использовать:

 ls | grep -v gz | xargs gzip 

Вы исключите файлы с шаблоном gz любом месте имени файла, а не только в конце .¹ Также необходимо принять во внимание, что анализ вывода ls является опасным, когда вы используете имена файлов с пробелами, символами новой строки и т. Д. ,

Более чистое решение, не полагающееся на gzip для пропуска файлов с завершением .gz , также обрабатывает .gz файлы в подкаталогах:

 find . -type f ! -name "*.gz" -exec gzip {} \; 


¹ Как izkata прокомментировал: использование только .gz для улучшения этого не сработает. Вам нужно будет использовать grep -vF .gz или grep -v '\.gz$' . Это все еще оставляет опасность обработки выходных данных

  • переносная команда для распаковки и распаковки без GNU и старого unix
  • TAR: лучше пропустить каталог или использовать split
  • Как сделать фиктивное приложение считывает файлы gzip («на лету») без изменений кода
  • Получите сжатый размер конвейерного вывода с помощью gzip?
  • есть файл tempfile2.gz (проверен с помощью команды файла), но gunzip / gzip -d не работает
  • Почему tar-архивные форматы переключаются на сжатие xz для замены bzip2 и что с gzip?
  • Gzip, но исключая некоторые файлы каталогов и также добавляя текущую дату
  • tar: исключить gzip-файл и не пытаться его уничтожить
  • Как я могу предотвратить gunzip | ntfsclone для зависания, если источник zip не читается
  • защита паролем для сжатия logrotate
  • diff gzipped tarball против каталога?
  • Linux и Unix - лучшая ОС в мире.