Gunzip은 특정 확장자를 가진 모든 파일을 다른 폴더로 압축합니다.

Gunzip은 특정 확장자를 가진 모든 파일을 다른 폴더로 압축합니다.

.gz확장자가 gz인 파일 28개와 확장자가 28개 파일이 포함된 폴더가 있습니다 .gz.bam.

.gz28개의 파일을 모두 압축을 풀고 다른 폴더로 보내고 싶습니다 . 저는 다음과 같이 하나씩 했습니다.

gunzip -c file1.gz > /mnt/s3/data_transfer/file1

.gz.bam 대신 .gz를 사용하도록 지정하려면 어떻게 해야 합니까?

답변1

그냥 반복해보세요:

for file in *gz; do
    gunzip -c -- "$file"  > /mnt/s3/data_transfer/"${file%.gz}"
done

is "${file%.gz}"쉘 구문은 값을 반환 $file하고 마지막 값을 제거합니다 .gz.

이 빠르고 더러운 방법은 아래 Stéphane의 방법만큼 강력하지 않습니다. 파일이 없는 디렉터리에서 실행하면 패턴 자체를 압축하려고 gz시도합니다 . *gz. gz​이것이 문제라면 대신 그의 방법을 사용하십시오.

답변2

그리고 bash:

(
  ret=0
  shopt -s nullglob

  for file in *.gz; do
    gunzip < "$file" > /mnt/s3/data_transfer/"${file%.gz}" || ret="$?"
  done
  exit "$ret"
)

( dotglob숨겨진 파일, 즉 이름이 로 시작하는 파일도 처리하려는 경우 .gz에도 이 옵션을 설정하십시오 ..)

존재하다 zsh:

(
  ret=0
  for file (*.gz(N.)) gunzip < $file > /mnt/s3/data_transfer/$file:r || ret=$?
  exit $ret
)

(또한 .glob 확장을 제한하기 위해 glob 한정자를 추가합니다.정기적인파일, D숨겨진 파일을 처리하기 위한 한정자를 추가합니다.

관련 정보