Name Mangler 3を使わず0円でターミナルでリネームする方法

Name Mangler 3とは

Mac向けリネームアプリで複数のファイルを簡単に一括リネームできる。

Name Mangler 3

某社のエンジニアにこのソフトを使用している方がいたのだが、用途が単純なファイル名およびフォルダ名の一括リネームだけだった。

Name Mangler 3は2,320円とリネームアプリにしては値段が高いので、単純なリネームだけならrenameコマンドを使用したほうが処理が早いし、0円とお財布にもやさしい。

renameコマンドの使い方

まず以下のコマンドでrenameをインストールする。

※ Homebrewをインストールしていない場合は先に公式サイトでインストールしてください。

brew install rename

インストールが完了したらcdコマンドでファイル(フォルダ)があるディレクトリに移動して以下のコマンドを実行するだけで一括置換できる。

rename s/置換前/置換後/ **/*

例えばfooという文字列が含まれるファイル(フォルダ)を一括置換したい場合は以下のようになる。

rename s/foo/bar/ **/*

置換前と置換後のファイル名を置換処理を実行する前に確認したい場合は「-n」を付ける。

rename -n s/置換前/置換後/ **/*
$ rename -n s/foo1/bar1/ **/*
'foo1.html' would be renamed to 'bar1.html'

-iでy/nで置換するものを選択できます。

$ rename -i s/foo1/bar1/ **/*
Rename 'foo1.html' to 'bar1.html' (y/n)?

普通にrenameを実行すると.gitの不可視フォルダなども対象になるので、それらを除外する場合は以下のようにfindとxargsを併用する。(renameにフォルダの除外オプションがないため)

※ この書き方の場合はrenameに「**/*」は不要

find . -not -path '*/\.*' | xargs rename s/置換前/置換後/

s/置換前/置換後/は正規表現も以下のように実行可能です。

■ ファイル構成例
foo.html
foo1.html
foo2.html
foo.js
dir/foo3.html
$ rename -n 's/foo(\d\.html)$/bar$1/' **/*
'dir/foo3.html' would be renamed to 'dir/bar3.html'
'foo1.html' would be renamed to 'bar1.html'
'foo2.html' would be renamed to 'bar2.html'