Як ви можете запустити файл і зберегти файл .gz?


209

За замовчуванням поведінка gunzip полягає у видаленні файлу .gz після його розпакування.

Як запобігти видаленню файлу?

Якщо ця функціональність не включена, чи існує альтернативна програма, що дозволяє це?

Я використовую Ubuntu 9.04


3
використовуйте наступну команду: gunzip -k
fazineroso

що у gunzip -k варіант? Я нікого не бачу.
Znik

1
@Znik, gzip / gunzip версії 1.6 і вище має можливість -k.
alexander barakin

Відповіді:


210

Ви шукаєте:

gzcat x.txt.gz >x.txt

The gzcat команда еквівалентна gunzip -c який просто записує вихідний потік stdout. Це залишить стиснутий файл недоторканим. Ви також можете використовувати:

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

Зауважимо, що на деяких системах gzcat також відомий як zcat замість цього виконайте такі дії:

zcat x.txt.gz >x.txt

2
Дякуємо за відповідь. Зростаючи з pkunzip в DOS я вважаю, що це дивно, що немає можливості зберегти файл. Особливо з таким інструментом, як gzip, який так широко використовується ... просто дивно.
Sen

4
FYI, я фактично не маю gzcat. Ні моєї локальної системи, ні системи, в яку я був ssh'ed. Отже, я повинен використовувати gunzip -c
Sen

24
це, ймовірно, просто zcat у вашій системі.
user23307

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

1
Ви також можете додати рядок alias gzcat = "gunzip -c" до вашого .bashrc
James Kingsbery

52

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

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

Докладніше про ручної сторінки .


До речі, зауважимо, що сторінка man, згадана вище, містить опцію -k, що означає збереження вхідних файлів. Можливо, це працює на версії BSD, але це не на моєму, тому -c рішення здається правильним.

31

Простішим рішенням є просто використання gunzip як фільтра, як це:

gunzip < myfile.gz > myfile

Я думаю, що це найчистіший шлях з тих пір gunzip ніколи не знає, який файл отримує, все, що він бачить, - це потік даних, тому неможливо змінити оригінальний файл.
Walf

12

Якщо це насправді архів (.tgz або розширення .tar.gz), то замість того, щоб переадресовуватись до файлу, подібного до всіх відповідей, ви бажаєте передати його до tar, наприклад:

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

щоб отримати фактичний вміст.


7
або просто виконайте: tar xzvf myfile.tar.gz
Joakim Elofsson

true, але тільки якщо ви маєте GNU tar. Наприклад, той, який поставляється з Solaris, не підтримує опцію z.
Alex

5

Використовувати -c можливість розпакувати файл у stdout. Він не торкнеться вихідного файлу.

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.

2

Gnu tar може читати файли gzip: tar -zxsvf myfile.tar.gz або tar -jxzvf myfile.tar.bz2 для файлів bzip tar.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.