Як ви можете запустити файл і зберегти файл .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.