Gzip несколько файлов по отдельности и сохранить оригинальные файлы

Я хочу сжать несколько файлов (в несколько файлов .gz) в каталоге, сохраняя оригиналы.

Я могу создавать отдельные файлы с помощью этих команд:

find . -type f -name "*cache.html" -exec gzip {} \;

или

gzip *cache.html

но ни один не сохраняет оригинал. Я пытался

 find . -type f -name "*cache.html" -exec gzip -c {} > {}.gz

но это только сделал файл {} .gz. Есть ли простой способ сделать это?

12 голосов | спросил Charles L. 7 J0000006Europe/Moscow 2011, 03:02:01

4 ответа


0

Ваш > в последней команде анализируется той же оболочкой, которая выполняет find. Использовать вложенную оболочку:

find . -type f -name "*cache.html" -exec sh -c "gzip < {} > {}.gz" \;
ответил Koterpillar 7 J0000006Europe/Moscow 2011, 03:25:48
0

Я бы использовал bash(1), просто for построить для этого:

for f in *cache.html ; do gzip -c "$f" > "$f.gz" ; done

Если бы я знал, что имена файлов были "нормальными", я бы пропустил "" вокруг аргументов, потому что я ленивый , И мои имена файлов обычно нормальные. Но сценарии не имеют такой роскоши.

ответил sarnold 7 J0000006Europe/Moscow 2011, 03:23:52
0

-k, --keep

gzip 1.6 (июнь 2013 г.) добавил параметр -k, --keep, так что теперь вы можете:

find . -type f -name "*cache.html" -exec gzip -k {} \;
gzip -k *cache.html

или для всех файлов рекурсивно просто:

gzip -kr .

Найдено по адресу: https: //unix.stackexchange. ком /вопросы /46786 /, как к сказать, GZIP к держать-оригинал-файл

ответил Ciro Santilli 新疆改造中心 六四事件 法轮功 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 05 Sep 2014 01:09:16 +0400 2014, 01:09:16
0

Поскольку у вас есть несколько файлов, может пригодиться GNU Parallel:

find . -type f -name "*cache.html" | parallel gzip '<{} >{}.gz'

Посмотрите вступительное видео для быстрого ознакомления: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

ответил Ole Tange 29 J0000006Europe/Moscow 2014, 01:26:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132