
リクエスト
hogehoge202505.log hogehoge202506.log hogehoge202507.log hogehoge202508.log hogehoge202509.log hogehoge202510.log hogehoge202511.log hogehoge202512.log 202505~202511までそれぞれ個別にgzipにしたい(202512は残す) hogehoge202505.log.gz hogehoge202506.log.gz hogehoge202507.log.gz hogehoge202508.log.gz hogehoge202509.log.gz hogehoge202510.log.gz hogehoge202511.log.gz hogehoge202512.log まとめて指定できるワンライナーを教えて(bash)
ChatGPT-5.2の回答
bash なら ブレース展開で一発です 👍
gzip hogehoge{202505..202511}.log
これで実行結果は以下になります:
hogehoge202505.log.gz hogehoge202506.log.gz hogehoge202507.log.gz hogehoge202508.log.gz hogehoge202509.log.gz hogehoge202510.log.gz hogehoge202511.log.gz
hogehoge202512.log は指定していないので、そのまま残ります。
補足(よく使うオプション) 元の .log を残したい場合
gzip -k hogehoge{202505..202511}.log
圧縮レベルを指定したい場合(例:最大圧縮)
gzip -9 hogehoge{202505..202511}.log
展開確認だけしたい場合(デバッグ)
echo hogehoge{202505..202511}.log
logrotate 代替や月次バッチなら、この書き方が一番シンプルで安全です。