[Linux] ファイル名を一括で変換する “rename” コマンド

[Linux] ファイル名を一括で変換する “rename” コマンド

Linux ファイル名を一括で変換する "rename" コマンド

ファイル名の変換は mv コマンドで行えますが、一括で変換を行いたい場合には使えません。

ファイル名を一括で変換したい場合は、rename コマンドを使用すれば可能です。基本的にはすべてのLinuxディストリビューションで使用可能です。今回は CentOS7 と Ubuntu16.04 で動作を確認しました。

Ubuntuについては、他のLinuxとパラメータでの指定方法が異なるので注意が必要です。

rename コマンドのパラメータと使い方(CentOS)

rename コマンドでファイル名の一括変換を行う場合、以下のようにパラメータを指定します。

$ rename [変換前文字列] [変換後文字列] [対象ファイル(複数可)]

ファイル名変換

例えばファイル名を "a.TXT" から "a.txt" と 変更したい場合には以下のようにします。拡張子部分を変換対象の文字列として指定しています。

$ rename .TXT .txt a.TXT

複数のファイルが対象の場合はファイル名を列挙します。

$ rename .TXT .txt a.TXT b.TXT

ワイルドカードでファイル名を一括変換

すべてのファイル名を列挙するのではなく、ワイルドカードを使用すれば、一括で変換できます。これで拡張子 .TXT のファイルを .txt に一括で変換できます。

$ rename .TXT .txt *.TXT

Ubuntu で使う rename コマンド

Ubuntuでも rename コマンドは存在するのですが、パラメータの渡し方が他のOSと異なるようです。Ubuntuの場合のパラメータは以下の通りです。

$ rename 's/[変換前文字列]/[変換後文字列]/' [対象ファイル(複数可)]

ファイル名変換

ファイル名を "a.TXT" から "a.txt" と 変更したい場合には以下のようになります。

$ rename 's/.TXT/.txt/' a.txt

複数ファイルを列挙することもできます。

$ rename 's/.TXT/.txt/' a.txt b.txt

CentOS の時と同じように変換できています。

ワイルドカードでファイル名を一括変換

これも同様にワイルドカードでファイル名の指定が可能です。大文字の .TXT 拡張子のファイルを小文字にファイル名を一括変換するサンプルです。

$ rename 's/.TXT/.txt/' *.TXT

正規表現を使ってファイル名を変換

Ubuntuの rename コマンドは正規表現を使うことができます。以下は正規表現を使ってファイル名の大文字部分をすべて小文字に変換するサンプルです。

$ rename 'y/A-Z/a-z/' *

拡張子をすべて削除するようなことも可能です。以下は、拡張子(.bak)のファイルから拡張子部分をすべて取り除きます。

$ rename 's/\.bak$//' *.bak

以上です。

参考URL

Linuxカテゴリの最新記事