파일을 어떻게 압축하고 .gz 파일을 유지합니까?


220

gunzip의 기본 동작은 압축 해제 후 .gz 파일을 삭제하는 것입니다.

파일을 삭제하지 못하게하려면 어떻게해야합니까?

이 기능이 포함되어 있지 않으면이를 허용하는 대체 프로그램이 있습니까?

우분투 9.04를 사용하고 있습니다


3
다음 명령을 사용하십시오 : gunzip -k
fazineroso

어떤 gunzip에 -k 옵션이 있습니까? 나는 아무도 보이지 않습니다.
Znik

1
@Znik, gzip / gunzip 버전 1.6 이상 에는 옵션이-k 있습니다.
aleksandr barakin

답변:


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
답변 해주셔서 감사합니다. DOS에서 pkunzip으로 자라서 파일을 유지할 수있는 옵션이 없다는 것이 이상합니다. 특히 gzip과 같은 도구가 널리 사용됩니다 ... 이상합니다.
Sen

4
참고로, 실제로 gzcat이 없습니다. 로컬 시스템이나 ssh'ed 시스템이 없습니다. 따라서, 저는 gunzip -c
Sen

26
아마도 시스템에서 zcat 일 것입니다.
user23307

2
파일을 유지하는 추가 옵션은 실제로 좋을 것입니다. 예를 들어, b (un) zip2는 유사한 구문을 사용 -k하며 원본 파일을 유지하기 위해 간단히 추가 할 수 있습니다.
schnaader

1
또한 .bashrc에 줄 별명 gzcat = "gunzip -c"를 추가 할 수도 있습니다
James Kingsbery

55

-cgunzip 옵션을 사용하면 출력을 stdout에 기록한 다음 선택한 파일로 파이프 할 수 있습니다.

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

매뉴얼 페이지 에 대한 자세한 내용 .


그건 그렇고, 위에서 언급 한 man 페이지는 -k 옵션을 보여줍니다. 이것은 입력 파일을 유지한다는 것을 의미합니다. 아마도 이것은 BSD 버전에서 작동하지만 내 것이 아니므로 -c 솔루션이 올바른 것으로 보입니다.

31

더 간단한 해결책은 gunzip을 다음과 같은 필터로 사용하는 것입니다.

gunzip < myfile.gz > myfile

나는 그것이 gunzip얻는 파일을 알지 못하기 때문에 이것이 가장 깨끗한 방법이라고 생각 합니다. 볼 수있는 것은 데이터 스트림이므로 원본 파일을 변경할 수는 없습니다.
Walf

12

실제로 tarball (.tgz 또는 .tar.gz 확장자) 인 경우 지금까지 모든 답변과 같이 파일로 리디렉션하는 대신 tar로 파이프로 연결하는 것이 좋습니다.

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

실제 내용을 얻을 수 있습니다.


7
tar xzvf myfile.tar.gz
Joakim Elofsson

사실이지만 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.bz2bzipped tar 파일을 읽을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.