正規表現を用いたファイルのリネームが可能なアプリのひとつ『NameChanger』について先日紹介しました。
正規表現が使えることでリネームの利便性が大幅に向上するのですが、使っているうちに文字列の置換がなぜか出来ないことに気づきました。
具体的には "aaa-picture_01.jpg" という書式の複数の連番ファイルを "picture_01 aaa.jpg" のように一気に文字列(組)の前後を入れ替えたい、といった使い方。
正規表現を多少使える程度の知識しかないので、根本的に理解を間違えている恐れは十分あるのですが、とりあえず現象と解決方法を備忘録を兼ねて記しておきます。
やりたい事はこう
元のファイル名:
- aaa-picture_01.jpg
- bbb_picture_02.jpg
- ccc-picture_03.jpg
これを以下のように前後の入れ替えをしたい:
- picture_01 aaa.jpg
- picture_02 bbb.jpg
- picture_03 ccc.jpg
やってみた
膨大な数のファイルから条件にヒットするファイル名に対して置換を行うならそれなりの書式があると思いますが、今回は上記3つのファイルに限定しているのでピンポイントで狙い撃ちしています。
正規表現のプロから見たら鼻で笑われるような書式だと思いますが、ど素人のやっている事なので目をつぶっていただけると幸いです(^-^;
で、NameChangerの "Original Text" 欄には次のように記述しました。
([a-c]{3}).(picture_0\d)
で、これを入れ替えさせるため、当方が普段使っているテキストエディタの『Jedit Ω』での正規表現に倣って、NameChangerの "New Text" 欄には次のように記述。
\2 \1
でも、プレビュー(Renamed Filename)をみると……
置換されずにバックスラッシュを無視した数字がそのまま放り込まれているだけ……
バックスラッシュじゃダメなのか?と思い試しに「¥(半角)」に置き換えてみたけど、今度は "¥2 ¥1.jpeg" ってなるだけでやっぱりダメ。
(´ε`;)ウーン…
こうやったらできた
Google先生にも聞いてみたり、開発元のサイトを含めて情報を探してみたんだけどなかなか見つからない……
(´-`).。oO(探しかたが下手すぎたかな😅)
で結局、自力でたどり着いた解決法はこうでした。
$2 $1
macOSが日本語環境だからなのか、それとも日本語JISキーボードを使っているからなのか、はたまたNameChanger固有の仕様なのか、あるいはそもそもドル($)を使うのが正解なのかは知らないけど(というか調べてない←)
でもまあ、とりあえず "\1" でダメなら "$1" を使ってみてください、という結論に達したのでNameChangerで正規表現を用いた置換に難儀していた方はお試しください。
それにしてもなんでだろう……(調べてない←:二度目)
単にバグだったりして(^-^;