複数のファイルをGunzipして名前を変更します。

複数のファイルをGunzipして名前を変更します。

gunzip1つのコマンド/スクリプトを使用して複数のファイルの名前を変更できるかどうか疑問に思います。

次の形式のファイルがたくさんあります。

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)に出力するため、2番目の名前変更呼び出しなしで別のファイルにリダイレクトできます。名前の変更は、変更を使用してファイル名変数自体で行われますbash(ワイルドカードパターンを一致させ、.DAT*に置き換えます.DAT)。ループ自体は、.で始まる現在のディレクトリの名前を繰り返します.gz

おすすめ記事