Подтвердить что ты не робот

GZip каждый файл отдельно

Как мы можем GZip каждый файл отдельно?

Я не хочу иметь все файлы в большой конфигурации.

4b9b3361

Ответ 1

Вы можете использовать gzip *


Примечание:

  • Это будет заархивировать каждый файл отдельно и УДАЛИТЬ оригинал.
  • Используйте опцию -k (--keep) для сохранения исходных файлов.
  • Это может не сработать, если у вас есть огромное количество файлов из-за ограничений оболочки
  • Для запуска gzip параллельно см. ответ @MarkSetchell ниже.

Ответ 2

Простой и очень быстрый ответ, который будет использовать все ваши ядра процессора параллельно:

parallel gzip ::: *

GNU Parallel - это фантастический инструмент, который следует использовать гораздо чаще в этом мире, где процессоры получают только больше ядер, а не большую скорость. Есть множество примеров, которые мы все хорошо бы потратили на 10 минут, чтобы прочитать... здесь

Ответ 3

Спустя семь лет этот высокооплачиваемый комментарий по-прежнему не имеет собственного полноценного ответа, поэтому я продвигаю его сейчас:

gzip -r .

Это имеет два преимущества по сравнению с принятым в настоящее время ответом: он работает рекурсивно, если есть какие-либо подкаталоги, и он не будет терпеть неудачу из Argument list too long, если количество файлов очень велико.

Ответ 4

Если вы хотите gzip каждый файл рекурсивно, вы можете использовать find piped для xargs:

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

Ответ 5

Попробуйте петлю

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

Ответ 6

Или, если у вас есть pigz (утилита gzip, которая распараллеливает сжатие на нескольких процессорах и ядрах)

pigz *