많은 내용이 포함된 폴더가 있습니다..tgz파일, 압축되지 않은 각 파일에는동일한파일 이름"000000_0".
누군가 나에게 다음을 수행하는 명령을 작성할 수 있습니까?
1. Untar all the .tgz files from a folder
2. rename each uncompressed file based on the .tgz file name
예를 들어, 2017-07-01.tgz -> 압축되지 않은 파일의 이름을 "2017-07-01.dat"
내 디렉터리에 .tgz 파일 목록이 있다고 가정해 보겠습니다.
2017-07-01.tgz
2017-07-02.tgz
2017-07-03.tgz
2017-07-04.tgz
2017-07-05.tgz
참고: 각 .tgz 파일에는 파일이 하나만 있습니다.000000_0".
답변1
사용 gnu parallel
:
$ parallel 'tar -xf {} --to-stdout > {.}.dat' ::: *.tgz
각 .tgz
파일에 대해 파일이 압축 해제되고( -xf
) 파일 내용이 stdout으로 스트리밍됩니다( --to-stdout
). 따라서 >
압축된 파일을 기본 이름 ({.}.dat
아니요 gnu parallel
:
for file in *.tgz; do
tar -xf $file --to-stdout > $(basename -s .tgz $file).dat;
done
basename
버전이 너무 오래된 경우 이 -s
매개변수가 존재하지 않습니다. 대신 사용하십시오 $(basename $file .tgz)
. 이는 현재 버전에서도 작동합니다.