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


220

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

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

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

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


3
используйте следующую команду: gunzip -k
fazineroso

у какого gunzip есть опция -k? Я никого не вижу.
Znik

1
@Znik, gzip / gunzip версии 1.6 и выше имеет опцию-k .
Александр Баракин

Ответы:


220

Вы ищете:

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

2
Спасибо за ответ. Взросление с pkunzip в DOS Я нахожу настолько странным, что нет возможности сохранить файл. Особенно с таким инструментом, как gzip, который так широко используется ... просто странно.
Сен

4
К вашему сведению, у меня на самом деле нет gzcat. Ни моя локальная система, ни система, в которую я был помещен. Итак, я должен использовать gunzip -c
Сен

26
это, вероятно, просто zcat в вашей системе.
user23307

2
Дополнительная опция сохранить файл была бы действительно хороша. Например, b (un) zip2 использует похожий синтаксис и позволяет просто добавить -kсохранить оригинальный файл.
шнаадер

1
Вы также можете добавить строку alias gzcat = "gunzip -c" в свой .bashrc
Джеймс Кингсбери

55

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

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

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


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

31

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

gunzip < myfile.gz > myfile

Я думаю, что это самый чистый способ, так как gunzipникогда не знает, какой файл он получает, он видит только поток данных, поэтому не может изменить исходный файл.
Уолф

12

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

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

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


7
или просто сделайте: tar xzvf myfile.tar.gz
Йоаким Элофссон,

правда, но только если у вас есть GNU tar. Например, тот, который поставляется с Solaris, не поддерживает опцию z.
Алекс

5

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

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

ИЛИ ЖЕ

gunzip -k myfile.gz

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.