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

Linuxでファイル名やディレクトリ名を変更するためのコマンドを紹介します。

ファイル名を変更するコマンドには「mv」コマンドもありますが、今回はファイル名を一括変更する「rename」コマンドについて説明します。

「mv」ではファイル名の一括変更はできないので、「rename」コマンドを覚えておくと便利です。

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

ファイル名の一部を置換することができるコマンドです。一括変更に使うことが多いですが、ひとつずつファイル名を変更することもできます。

$ rename 置換する文字列 置換後の文字列 ファイル名 ファイル名2 ...

これだけでは、分かりづらいので具体的な例で説明します。

例えば、「2014-01.txt」というファイルを「2015-01.txt」に変更したい場合は、以下のようなコマンドになります。

$ rename 2014 2015 2014-01.txt

複数ファイルを指定する場合は、スペース区切りで連続してファイル名を書くことで一括変更できます。

$ rename 2014 2015 2014-02.txt 2014-03.txt

ワイルドカードを使って一括変更する場合

また、ワイルドカードを使用することもできます。ワイルドカードとは、どんな文字列にもマッチするもののことです。

例えば、ファイル名の指定を「2014-*.txt」とすれば、「2014-」から始まり、「.txt」で終わる全てのファイルを一括変更することができます。

$ rename 2014 2015 2014-*.txt

ワイルドカードを使えば以下のように、「.htm」拡張子のファイルを「.html」に一括変更することもできます。

$ rename htm html *.htm

注意点:
ファイルだけでなくディレクトリも置換対象になるので、その点は注意が必要です。

例えば、sample/ディレクトリ以下のsample.txtをsample2.txtに変更しようと以下のようなコマンドを入力するとエラーとなります。

$ rename sample sample2 sample/sample.txt
  rename: sample/sample.txt から new/sample.txt への名前の変更に失敗しました: そのようなファイルやディレクトリはありません

そのため、ranameコマンドは同一ディレクトリ内でのファイル名一括変更時のみに使用したほうが良いでしょう。


イベント

2017/12/05(火)
Design Thinking Square