GZip каждый файл отдельно
Как мы можем GZip каждый файл отдельно?
Я не хочу иметь все файлы в большой конфигурации.
Ответы
Ответ 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 *