디렉토리와 하위 디렉토리에서 여러 개의 gzip 파일을 어떻게 추출 할 수 있습니까?


11

나는 명령 gzipgunzip명령을 모두 시도했지만

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

-f옵션을 시도하면 하나의 단일 파일에서 작업하는 데 시간이 오래 걸리고 명령이 성공적으로 실행되지 않습니다. 뭔가 빠졌습니까?


2
디렉토리에 -Y.something.gz? 와 같이 이름이 하이픈으로 시작하는 .gz 파일이 포함되어 있습니까? 그렇다면 Gnu --플래그 를 사용하여 옵션이 아닌 파일 이름으로 처리되도록해야합니다.gunzip -- *.gz
steeldriver

@steeldriver 그래, 난 몇 개의 파일로 시작했다 않습니다 -
허먼 Toothrot

두 문제 중 하나 이상이 발생했습니다.
허먼 치아 로스

답변:


16

아래 명령을 사용할 수 있습니다.

.gz파일이 있는 디렉토리로 이동하여 명령을 실행하십시오.

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

원래 이름의 모든 파일을 추출하여 현재 사용자 홈 디렉토리 ( /home/username)에 저장합니다 . 다른 곳으로 변경할 수 있습니다.

편집하다 :

gunzip *.gz

이 명령도 작동합니다. 그러나 기본적으로 원본 파일을 대체합니다.


내 질문에 쓴 것을 읽었습니까? gunzip * .gz가 작동하지 않습니다. 그러나 for 루프가 작동하면 당황합니다.
Herman Toothrot

그러나 그것은 나를 위해 일하고 다른 사람들은 왜`invalid option- 'Y'`을 보이고 있습니까? 파일 형식이 잘못되었거나 명령에 누락 된 부분이 있다고 생각합니다.
pl_rock


4

옵션 # 1 : 작은 따옴표 (짧은 버전)를 사용하여 여러 파일 압축 풀기

gunzip '*.gz'

참고 *.gz그래서 쉘이 와일드 카드 문자로 인식되지 않습니다, 단어는 두 개의 작은 따옴표 사이에 배치됩니다.

옵션 # 2 : 쉘 for 루프 (긴 버전)를 사용하여 여러 파일 압축 풀기

for g in *.gz; do gunzip $g; done

소스

편집하다 :

나는 방금 시도했다 :

gunzip -dk *.gz

그리고 효과가있었습니다.

-d압축을 풀고 k원본 파일을 보관합니다.


gunzip ‘*.gz’ 이 명령 을 확인 했습니까 ? 이 명령을 실행할 수 없습니다. 오류가 발생했습니다.
pl_rock

use gunzip '*.gz'not gunzip ‘*.gz’ ( ' '
not`

난 그냥 당신의 명령을 붙여 복사하고 gzip: *.gz: No such file or directory새로운도 작동하지 않습니다. 당신이 시도 했습니까?
pl_rock

그것은 작동하지 않습니다 gunzip '*
.gz'gzip

미안, 나는 그것을 시도하지 않았다! 나는 지금 윈도우즈에있다 :(
Bilal

0

리눅스 사용자 :

현재 디렉토리 및 서브 디렉토리에서 최소량의 .gz 파일을 추출하려면 다음 명령을 사용하십시오.

gunzip *.gz

현재 디렉토리 및 서브 디렉토리에서 원하는 수의 .gz 파일을 추출하려면 다음 명령을 사용하십시오.

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