【Linuxコマンド】renameで複数のファイル名を一括変更する

Linuxには複数のファイル名を一括で変更するときに便利な「rename」コマンドがあります。

ここでは「rename」コマンドについて以下の内容で解説していきます。

rename_image

この記事では「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

実行結果:
rename_image01

ファイル名が「20180426_01.txt」に変更されていますね!

複数のファイル名を変更する

複数のファイルを指定して一括変更する場合は、ファイル名をスペースで区切って指定します。

$ rename "s/2017/2018/;" 20170426_01.txt 20170426_02.txt

実行結果:
rename_image02

「2017」に一致する複数のファイルが一括で変更されていることがわかりますね!

なお、ワイルドカート「*」を使用することで、置換文字列に一致するファイルを1つずつ指定することなく一括で変更することも可能です。

$ rename "s/2017/2018/;" 20170426*

拡張子を一括変更する

拡張子を変更する場合も通常のファイル名変更と同様に、置換文字列の箇所に拡張子を指定すればOKです!

以下の例では拡張子「.txt」のファイルを「.dat」に変更しています。

$ rename "s/txt/dat/;" test*

実行結果:
rename_image03

このように拡張子も一括で変更できていますね!

renameコマンドがエラーになる場合

もし、上記の手順でうまく動作しない場合、renameコマンド自体のインストールが必要になるかもしれません。

エラーなどが表示されたら、下記のコマンドでrenameコマンド自体をインストールしてから再度試してみてください。

$ brew install rename

renameコマンドのオプション

「rename」コマンドで使用する主なオプションです。

オプション説明
-vコマンド成功時の詳細表示
-n変更したファイル情報
-f置換後のファイル名が存在しても上書きする

-vで詳細表示

コマンド実行時に詳細な情報を表示させたい場合は「-v」オプションを使用します。


$ rename -v "s/test/sample/;" test_01.txt test_02.txt

実行結果:
rename_image04

以下のように対象のファイルが置換後の名称で変更されたことがメッセージで表示されます。
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おすすめ入門書7選
更新日 : 2021年11月17日

Linux入門者に必要な知識をすべて解説!おすすめサイトや本もご紹介
更新日 : 2021年11月17日

まとめ

ここでは、Linuxで複数ファイルを一括でリネームできる「rename」コマンドについて、

  • renameコマンドとは
  • renameコマンドの使い方
  • renameコマンドのオプションと使い方

などについて解説しました。

「rename」コマンドは複数のファイルを一括で変更するときに便利なコマンドですので、この機会に使い方をよく理解しておきましょう。

もし「rename」コマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。

Writer

侍エンジニア編集部

株式会社SAMURAI

侍エンジニアは「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close