여러 파일을 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(모든 globbing 패턴을 일치시키고 .DAT*로 바꿉니다 .DAT). 루프 자체는 이름이 .로 끝나는 현재 디렉터리의 파일을 반복합니다 .gz.

관련 정보