Linuxには複数のファイル名を一括で変更するときに便利な「rename」コマンドがあります。
ここでは「rename」コマンドについて以下の内容で解説していきます。
この記事では「rename」コマンドについてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!
renameコマンドとは
「rename」はファイル名を変更するためのコマンドです。
ファイル名を変更(移動)するコマンドとして「mv」がありますが、「rename」コマンドは指定した文字列で複数のファイルを一度に変更できることが特徴の1つです。
なお、注意点として「rename」コマンドはUbuntuとUbuntu以外のLinuxOSで書式が異なります。
通常のLinuxOSで「rename」コマンドを使用する場合は以下のように記述します。
$ rename 置換前文字列 置換後文字列 ファイル名1 ファイル名2 …
Ubuntuの場合は以下のように記述します。
$ rename "s/置換前文字列/置換後文字列/;" ファイル名1 ファイル名2 …
違いとして、Ubuntuの場合は置換前文字列と置換後文字列をダブルクォーテーション「””」またはシングルクォーテーション「”」で囲み、先頭に「s」を付けて間にスラッシュ「/」で挟む必要があります。
※以降はUbuntuの「rename」コマンドで解説します。
renameコマンドの使い方
ここでは、パターン別に「rename」コマンドの使い方を解説します。
ファイル名を変更する
ファイル名「20170426_01.txt」の2017を2018に変更したい場合は以下のように記述します。
$ rename "s/2017/2018/;" 20170426_01.txt
実行結果:
ファイル名が「20180426_01.txt」に変更されていますね!
複数のファイル名を変更する
複数のファイルを指定して一括変更する場合は、ファイル名をスペースで区切って指定します。
$ rename "s/2017/2018/;" 20170426_01.txt 20170426_02.txt
実行結果:
「2017」に一致する複数のファイルが一括で変更されていることがわかりますね!
なお、ワイルドカート「*」を使用することで、置換文字列に一致するファイルを1つずつ指定することなく一括で変更することも可能です。
$ rename "s/2017/2018/;" 20170426*
拡張子を一括変更する
拡張子を変更する場合も通常のファイル名変更と同様に、置換文字列の箇所に拡張子を指定すればOKです!
以下の例では拡張子「.txt」のファイルを「.dat」に変更しています。
$ rename "s/txt/dat/;" test*
実行結果:
このように拡張子も一括で変更できていますね!
renameコマンドがエラーになる場合
もし、上記の手順でうまく動作しない場合、renameコマンド自体のインストールが必要になるかもしれません。
エラーなどが表示されたら、下記のコマンドでrenameコマンド自体をインストールしてから再度試してみてください。
$ brew install rename
renameコマンドのオプション
「rename」コマンドで使用する主なオプションです。
オプション | 説明 |
---|---|
-v | コマンド成功時の詳細表示 |
-n | 変更したファイル情報 |
-f | 置換後のファイル名が存在しても上書きする |
-vで詳細表示
コマンド実行時に詳細な情報を表示させたい場合は「-v」オプションを使用します。
$ rename -v "s/test/sample/;" test_01.txt test_02.txt
実行結果:
以下のように対象のファイルが置換後の名称で変更されたことがメッセージで表示されます。
test_01.txt renamed as sample_01.txt
test_02.txt renamed as sample_02.txt
-fで強制的に上書きする
「rename」コマンドは置換後のファイル名称がすでに存在する場合はコマンドが失敗してしまいます。
たとえば、「test_01」の名称のファイルを「sample_01」に置換しようとしたが、すでに「sample_01」が存在した場合、
$ rename "s/test_01/sample_01/;" test_01.txt
以下のようなメッセージが出力されます。
「test_01.txt not renamed: sample_01.txt already exists」
このような場合に強制的に上書きを実行する場合は「-f」オプションを使用します。
$ rename -f "s/test_01/sample_01/;" test_01.txt
これでコマンドが失敗することなく上書きされます。
Linuxについてもっと知りたい方へ
そもそもLinuxについて、
「実はなんとなくしか理解していない…」
「Linuxを効率よく学習する方法が知りたい」
といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!
まとめ
ここでは、Linuxで複数ファイルを一括でリネームできる「rename」コマンドについて、
- renameコマンドとは
- renameコマンドの使い方
- renameコマンドのオプションと使い方
などについて解説しました。
「rename」コマンドは複数のファイルを一括で変更するときに便利なコマンドですので、この機会に使い方をよく理解しておきましょう。
もし「rename」コマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。