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
以上です。
コメントを書く