画像のファイル整理中とかに時々出てくるシチュエーションのbash, fishのワンライナスニペット。毎回ChatGPTに聞くのも煩わしいので備忘録メモ。
目次
はじめに:
数値で構成されたファイル名(例: 1.jpg
、 10.jpg
)を3桁のゼロ埋め形式(例: 001.jpg
、 010.jpg
)に変更する方法について解説します。ここでは、BashシェルとFishシェルの両方で利用可能なワンライナーコマンドを紹介します。
Bash シェル:
Bash シェルでは、次のワンライナーコマンドで、カレントディレクトリにある全ての .jpg
ファイル名をゼロ埋めできます。
for file in *.jpg; do [[ $file =~ ^([0-9]+)\.jpg$ ]] && mv "$file" "$(printf "%03d.jpg" ${BASH_REMATCH[1]})"; done
このコマンドは、カレントディレクトリに存在する全ての .jpg
ファイルを対象にし、数字だけのファイル名を3桁のゼロ埋めに変更します。
Fish シェル:
Fish シェルでは、次のワンライナーで同等の操作が可能です。
for file in *.jpg; if echo $file | grep -qE '^[0-9]+\.jpg$'; set -l num (string match -r '([0-9]+)' $file)[2]; mv $file (printf "%03d.jpg" $num); end; end
Fish シェルでこのコマンドを実行すると、カレントディレクトリにある数字だけの .jpg
ファイルが、3桁のゼロ埋め形式に変更されます。
まとめ:
シェルスクリプトを用いて、数値で構成されたファイル名をゼロ埋め形式に変更することは、ファイルの整理や管理を助けます。Bash シェルと Fish シェルのどちらも、簡単に同等の操作を実行することができます。