Linuxでファイル名の前後に文字を追加したい時の簡単な方法

ある方に、

「ファイル名の最初に一括でzとつけたいのだけれども、どうしたらよいだろうか?」

と質問されました。

たとえば、

001.jpg 002.jpg 003.jpg 004.jpg

をすべて

z001.jpg z002.jpg z003.jpg z004.jpg

としたいというような時です。

ここで、Linuxではrenameというコマンドを使います。

renameは以下の書式を知っていれば応用が効きます。

rename 's/置換前文字列/置換後文字列/' ファイル名

この、’s/before/after/’はsedでの置換と同じ書式です。sはsubstituteの略です。

でも、今は置換ではなく、文字列を追加したいわけです。

こういう時、Linuxはたいしたもんだなと思うのですが、ファイルの頭は^という特殊文字で表現されます。
そして、ファイルの最後は$で表現されます。(正規表現ですね)

なので、今、ファイル名にzを追加したい時は、

「^をzに置換」してあげると考えるわけです。

したがって、以下のようになります。

rename 's/^/z/' 00*.jpg

もし、ファイル名の最後に.oldをつけたかったら以下のようになります。

rename 's/$/.old/' 00*.jpg

^と$についての知識がちょっとあるだけで、ずいぶん楽になりますね。