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
.