複数のファイルをgzipに圧縮して名前を変更します。

複数のファイルをgzipに圧縮して名前を変更します。

複数のファイルを1つのディレクトリに圧縮して名前を変更する必要があります。 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 {}

関連情報