Как вы архивируете файл и сохраняете файл .gz?

190836
Sen

Поведение gunzip по умолчанию заключается в удалении файла .gz после его распаковки.

Как я могу предотвратить удаление файла ??

Если эта функциональность не включена, то есть ли альтернативная программа, которая позволяет это?

Я использую Ubuntu 9.04

209
используйте следующую команду: gunzip -k fazineroso 8 лет назад 3
у какого gunzip есть опция -k? Я никого не вижу. Znik 8 лет назад 0
@Znik, * gzip / gunzip * версии 1.6 и выше [имеет параметр `-k`] (http://git.savannah.gnu.org/cgit/gzip.git/commit/?id=0192f02e26ac9fa0a27ed177263ee3ea73d5e95c). alexander barakin 7 лет назад 1

7 ответов на вопрос

210
rogerdpack

Ты ищешь:

gzcat x.txt.gz >x.txt 

Команда gzcatэквивалентна gunzip -cкоторой просто записывает поток вывода stdout. Это оставит сжатый файл без изменений. Так что вы также можете использовать:

gunzip -c x.txt.gz >x.txt 

Обратите внимание, что в некоторых системах gzcat также известен как zcatтак: запустите его следующим образом:

zcat x.txt.gz >x.txt 
Спасибо за ответ. Взросление с pkunzip в DOS Я нахожу настолько странным, что нет возможности сохранить файл. Особенно с таким инструментом, как gzip, который так широко используется ... просто странно. Sen 14 лет назад 2
К вашему сведению, у меня на самом деле нет gzcat. Ни моя локальная система, ни система, в которую я был помещен. Итак, я должен использовать gunzip -c Sen 14 лет назад 4
это, вероятно, просто zcat в вашей системе. user23307 14 лет назад 23
Дополнительная опция сохранить файл была бы действительно хороша. Например, b (un) zip2 использует похожий синтаксис и позволяет просто добавить `-k`, чтобы сохранить исходный файл. schnaader 12 лет назад 2
Вы также можете добавить строку alias gzcat = "gunzip -c" в ваш .bashrc James Kingsbery 12 лет назад 1
@Sen: pkunzip более сопоставим с tar -xzf ; он извлекает несколько файлов из сжатого файла и не удаляет сжатый файл. В системах * NIX понятия «связать несколько файлов вместе» и «сжимать данные» не соотносятся, как с .zip. Это означает, что когда появляются новые системы сжатия, нам не нужно заново изобретать / переопределять код / ​​логику «связать несколько файлов». retracile 11 лет назад 0
Позвольте мне уточнить @JamesKingsbery, где строка начинается и заканчивается `alias gzcat =" gunzip -c "` ... Конечно, я не против использования `zcat`. Меньше печатать, больше энергосбережения;) Buttle Butkus 11 лет назад 0
Хотя этот ответ мне помог, я все же хочу наказать парня, который разработал эту команду и решил, что деструктивное поведение должно быть по умолчанию. donquixote 10 лет назад 0
@schnaader выглядит так, будто gunzip поддерживает опцию --keep начиная с версии 1.6 ... Jacob 9 лет назад 1
Ах, спасибо, Джейкоб! @paxdiablo, не могли бы вы отредактировать ответ, чтобы он дал пример функции -k? (http://savannah.gnu.org/forum/forum.php?forum_id=7623, параграф «Новые функции») schnaader 9 лет назад 0
Эта процедура не работает, когда начало файла повреждено. Znik 8 лет назад 0
52
Stef

Вы можете использовать -cопцию gunzip, которая записывает вывод в stdout, а затем передает его в файл по вашему выбору:

gunzip -c compressed-file.gz > decompressed-file 

Подробнее на странице руководства .

Кстати, обратите внимание, что на странице руководства, упомянутой выше, указана опция -k, что означает сохранение входных файлов. Возможно, это работает на версии BSD, но не на моей, поэтому решение -c кажется правильным. 13 лет назад 0
31
retracile

Более простое решение - просто использовать gunzip в качестве фильтра:

gunzip < myfile.gz > myfile 
Я думаю, что это самый чистый способ, так как `gunzip` никогда не знает, какой файл он получает, все, что он видит, - это поток данных, поэтому не может изменить исходный файл. Walf 7 лет назад 0
12
Alex

Если это на самом деле тарбол (расширение .tgz или .tar.gz), то вместо перенаправления в файл, как все ответы на данный момент, вы захотите передать его в tar следующим образом:

gunzip -c myfile.tar.gz | tar xvf - 

так что вы получите фактическое содержание.

или просто сделайте: tar xzvf myfile.tar.gz Joakim Elofsson 14 лет назад 7
правда, но только если у вас есть GNU tar. Например, тот, который поставляется с Solaris, не поддерживает опцию z. Alex 14 лет назад 0
5
mob

Используйте -cопцию, чтобы распаковать файл в стандартный вывод. Это не коснется оригинального файла.

gunzip -c myfile.gz > myfile 
3
Nabi K.A.Z.
gzip -dk myfile.gz 

ИЛИ ЖЕ

gunzip -k myfile.gz 

Комментарии:

 -k --keep Keep (don't delete) input files during compression or decompression. 
2
Justin Smith

Gnu tar может читать файлы gzip: tar -zxsvf myfile.tar.gzили tar -jxzvf myfile.tar.bz2файлы bzip tar.

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