[Tips]正規表現でファイル名を変更する

デジカメで撮った写真が溜まってきたので、整理しようかと考えました。

ついでなので、わかりやすいファイル名を付けようと思います。

ということで以下が今回使用したコマンドです。

dir "Photo*.jpg" | ren -newName { [Text.RegularExpressions.Regex]::Replace($_.Name, "Photo(\d*)`.jpg", "運動会`$1.jpg") }

このコマンドはPhotoXXX.jpg というファイル名を 運動会XXX.jpg に変換します。XXXは連番を意味しています。

まずはdirで対象の画像ファイルを絞り込み。

次に、絞り込んだファイルをパイプで渡してren(Rename-Itemコマンドレット)でファイル名を変換します。

ファイル名の変換は、正規表現を扱うクラスのReplaceメソッドで行っています。

Replaceメソッドの第1引数が元のファイル名、第2引数が変換後のファイル名です。

第1引数の方は”Photo(\d*)`.jpg”とすることで、Photoで始まる連番ファイルを対象にしています。このとき、拡張子の部分は`を付けないと上手く行かないので注意してください。

第2引数は、連番を残して「Photo」を「運動会」に変更しています。$1というのは第1引数の正規表現パターンを表しています。今回は連番の部分が相当します。

もしも正規表現パターンが複数ある場合は$1,$2とパターン分の指定が可能になります。

今回のコマンドを実行すると

Photo000.jpg
Photo001.jpg
Photo002.jpg
Photo003.jpg
Photo004.jpg
Photo005.jpg
Photo006.jpg
Photo007.jpg
Photo008.jpg
Photo009.jpg

というファイル群は

運動会000.jpg
運動会001.jpg
運動会002.jpg
運動会003.jpg
運動会004.jpg
運動会005.jpg
運動会006.jpg
運動会007.jpg
運動会008.jpg
運動会009.jpg

のように変換されます。

 

万が一に備えて、ファイルのバックアップを取った上で実行してください。PowerShell from Japan!! では責任は負いかねます。

コメント

タイトルとURLをコピーしました