MENU

シェルスクリプトでファイル名をゼロ埋めする方法: BashとFishシェル

画像のファイル整理中とかに時々出てくるシチュエーションのbash, fishのワンライナスニペット。毎回ChatGPTに聞くのも煩わしいので備忘録メモ。

目次

はじめに:

数値で構成されたファイル名(例: 1.jpg10.jpg )を3桁のゼロ埋め形式(例: 001.jpg010.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 シェルのどちらも、簡単に同等の操作を実行することができます。

目次