Как вы архивируете файл и сохраняете файл .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.