여러 파일을 gzip으로 압축하고 이름을 바꿉니다.

여러 파일을 gzip으로 압축하고 이름을 바꿉니다.

여러 파일을 하나의 디렉토리에 압축하고 이름을 바꿔야 합니다. zip 파일로 압축하고 싶지 않습니다. 즉

압축:

ABCDEPG01_20171120234905_59977
ABCDEPG02_20171120234905_59978
ABCDEPG03_20171120234905_59979

도착하다:

ABCDEFG_DWH_ABCDEPG01_20171120234905_59977.gz
ABCDEFG_DWH_ABCDEPG02_20171120234905_59978.gz
ABCDEFG_DWH_ABCDEPG03_20171120234905_59979.gz

답변1

접두어만 추가하시나요? 그러면 다음과 같은 작업을 수행할 수 있습니다.

prefix=ABCDEFG_DWH_
for f in ABCDEPG*; do
    gzip < "$f" > "$prefix$f.gz" && rm -- "$f"
done

답변2

또 다른 방법이르카츄의(gzipOpenBSD 시스템에서 발견됨오직):

for name in ABCDEPG*; do
    gzip -o "ABCDEFG_DWH_$name.gz" -- "$name"
done

또는 병렬 xargs(여기서 4개의 병렬 작업이 생성됩니다):

printf '%s\n' ABCDEPG* | xargs -P 4 -I {} gzip -o ABCDEFG_DWH_{}.gz -- {}

xargs덜 발전된 구현의 경우 병렬 작업 gzip(Linux에서 작동 가능):

printf '%s\n' ABCDEPG* |
xargs -P 4 -I {} \
    sh -c 'gzip -- "$1" && mv -- "$1.gz" "ABCDEFG_DWH_$1.gz"' sh {}

관련 정보