Как сжать несколько файлов в один файл GZ?

74

У меня есть 100 файлов: cvd1.txt, cvd2.txt...cvd100.txt

Как gzip100 файлов в один .gzфайл, так что после того как я gunzipэто, я должен иметь cvd1.txt, cvd2.txt... cvd100.txtотдельно?

Тони
источник

Ответы:

40

если у вас есть почтовый индекс,

zip myzip.zip cvd*.txt

Не надо tarих сначала.


источник
1
@ Kurumi- Программы Windows, такие как Winzip или 7-zip, распознают файлы .zip?
1
@Тони. Я верю, что они делают. Я протестировал 7-zip версию для Linux с zip и смог извлечь. Если вы хотите, есть также GNU Zip для Windows.
Вы теряете zgrep, zcmp, zdiffи все виды инструментов , которые могут работать на трубах по вашему выбору , не потокового формата , который называется зипом. Опытные пользователи используют трубы.
Танкист 六四
83

Вы хотите, чтобы tarваши файлы вместе и gzipполученный файл tar.

tar cvzf cvd.tar.gz cvd*.txt

Чтобы распаковать tar-файл gzip'd, вы должны сделать:

tar xvzf cvd.tar.gz -C /path/to/parent/dir

Это позволит извлечь ваши файлы в /path/to/parent/dirкаталоге

SiegeX
источник
6
если вы назовете файл с расширением .tgz (сокращение от tar gz), то программы Windows распознают его как нечто, что winzip и т. д. может обрабатывать как есть. Поздравляю SiegeX за 10К!
Оболочка
23

Вы захотите использовать tar, вот так:

tar -czvf file.tar.gz cvd*.txt

tar объединяет файлы, а gzip выполняет сжатие.

Quoth the gzip manpage:

Если вы хотите создать один архивный файл с несколькими членами, чтобы впоследствии их можно было извлекать независимо, используйте архиватор, такой как tar или zip. GNU tar поддерживает опцию -z для прозрачного вызова gzip. gzip разработан как дополнение к tar, а не как замена

Дэн Фего
источник
13

gzip сам по себе ничего не знает о файловой структуре. Чтобы сделать то, что вы хотите, вам нужно сначала поместить файлы в какой-нибудь контейнерный файл (например, структуру tar или аналогичный), а затем распаковать его. Для этого на платформах GNU tar имеет переключатели z и j (для bzip2).

Джо
источник
2
Переключатель на самом деле 'z' ('x' для извлечения). Хорошо, что вы упомянули 'j' / bzip2 - гораздо более сжатое сжатие.
5

Вы можете сделать это с помощью:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

или же

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

или же

tar cvzf my_final_filename.tar.gz my_first_file my_second_file ... my_last_file

tar -czvf my_final_filename.tar.gz
Вахид Ф
источник
Я не думаю, что ваша первая команда работает. По крайней мере, в целом. Если это работает для определенной оболочки, вы должны указать это. Я бы понизил, если бы у меня было достаточно представителей.
DPM
@DPM прав, gzip/gunzipкоманды не работают, он вернет ошибкуgzip: my_final_filename.gz: No such file or directory
Билал
1

Чтобы сжать несколько файлов с разными шаблонами, мы могли бы это:

tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json

это добавит все файлы .yml, начинающиеся с Алисы, из любого подкаталога и добавит все файлы .json, начинающиеся с Боба, из любого подкаталога.

Сайрам Криш
источник
Уже ответил в superuser.com/a/334830/107419
praagagupd