여러 파일을 Gunzip하고 이름을 바꿉니다.

여러 파일을 Gunzip하고 이름을 바꿉니다.

gunzip하나의 명령/스크립트를 사용하여 여러 파일의 이름을 바꿀 수 있는지 궁금합니다 .

다음 형식의 파일이 많이 있습니다.

test.20120708191601.DAT.3599502593.gz
test.20120708201601.DAT.99932140.gz
test.20120708204600.DAT.1184686967.gz
test.20120708212100.DAT.824089664.gz
test.20120708215100.DAT.1286044098.gz
test.20120708222100.DAT.1414234861.gz

나는 gunzip그것들이 필요하고 .DAT다음 형식으로 이후의 모든 것을 삭제합니다.

test.20120708191601.DAT
test.20120708201601.DAT
test.20120708204600.DAT
test.20120708212100.DAT
test.20120708215100.DAT
test.20120708222100.DAT

답변1

이 시도:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

이 방법에서 사용하는 옵션은 gunzip압축되지 않은 스트림을 표준 출력( -c)으로 출력하므로 두 번째 이름 바꾸기 호출 없이 다른 파일로 리디렉션할 수 있습니다. 이름 바꾸기는 바꾸기를 사용하여 파일 이름 변수 자체에서 수행됩니다 bash(와일드카드 패턴을 일치시키고 .DAT*로 바꿉니다 .DAT). 루프 자체는 .로 시작하는 현재 디렉터리의 이름을 반복합니다 .gz.

관련 정보