支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

Linux上でファイルのリネームを行う作業は一度に限らず頻繁に起こります。その作業で活用される「mv」コマンドの他に今回改めて振り返るのは「複数のファイルを一度に指定した文字列で変更処理が行える」[rename]コマンドについて説明を行っていきます。

Linux「rename」コマンドについて

「rename」コマンドの基本書式

$ rename[置換前の文字列][置換後の文字列](ファイル名1)(ファイル名2)...

例:「before.txt」を「after.txt」にリネームする

$ rename before after before.txt

例:複数のファイルを「before.txt」を「after.txt」にリネームする

$ rename before after before01.txt before02.txt

ワイルドカードを使用して一括変更する

「rename」コマンドはどのような文字列にもマッチさせることが出来るワイルドカードにも使用すること可能です。例えばファイル名の指定文字列を「before-*.txt」と設定した場合、「before-」で始まり「.txt」で終わる全てのファイルを対象にリネームすることが出来ます。

$ rename before after before-*.txt

あるいは拡張子だけを対象にすることも可能です。

$ rename jpg png *.jpg

※ただしファイルだけではなくディレクトリも置換対象に入るため、注意が必要です。そのためrenameコマンドは同一ディレクトリ内でのファイルに対して一括変更時のみの使用に限定したほうが良いです。

Linuxコマンド「rename」の注意点

通常のLinuxOSで「rename」を使用する場合は先述の通り、[$ rename (置換前文字列)(置換後文字列)(ファイル名1)(ファイル名2)]となりますが、「Ubuntu」というLinuxOSとそれ以外のLinuxOSとでは「rename」コマンドの書籍が異なります。以下に改めて比較してみます。

通常LinusOSでの「rename」コマンド形式

$ rename (置換前文字列)(置換後文字列)(ファイル名1)(ファイル名2)

Ubuntuでの「rename」コマンド形式

$ rename "s/(置換前文字列)/(置換後文字列)/;"(ファイル名1)(ファイル名2)

大きく異る点としてはUbuntuの場合、置換前文字列と置換後文字列を「””」:ダブルクォーテーションマークか「”」:シングルクォーテーションマークで囲み、さらに「/」:スラッシュで区切り「s」を付与する必要があります。以下にUbuntuの場合でのrenameコマンドの使用方法を説明していきます。

renameコマンドの基本:Ubuntuの場合

一つのファイル名を変更する

$ rename "s/before/after/;" before01.txt

上記のコマンドを実行した場合では「before01.txt」が「after01.txt」にリネームされます。

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

$ rename "s/before/after/;" before01.txt before02.txt

先述のコマンドライン末にファイル名を追記するだけで、実行した場合は「before01.txt」「before02.txt」とが「after01.txt」「after02.txt」にリネームされます。

ワイルドカードを使用してファイル名を変更する

「*」:ワイルドカードを使用することで、置換文字列にマッチするファイルを一つずつ指定する必要がなくなり、一括での変更を可能にします。下記のコマンドを実行した場合は指定したディレクトリ範囲内にある「before」と名のつくファイルが「after」に置換処理がされます。

$ rename "s/before/after/;" before*

拡張子を一括変更する

拡張子を変更する場合も通常のファイル名をリネームする場合と同じくして「コマンドラインの置換文字列の部分を拡張子で指定」することで可能になります。以下のコマンドラインを実行することで拡張子jpgをpngに変換しています。

$ rename "s/jpg/png/;" befpre*

renameコマンドを実行した際にエラーメッセージが出る

もし上記のコマンド書式や手順でエラーが生じる場合はrenameコマンド自体のインストールがされていない場合があります。その場合はrenameコマンドのインストールを行ってください。手順としては下記を実行してください。

$ brew install rename

「rename」コマンドのオプション

[-v ]:コマンド実行が成功した場合にその詳細を表示する

[-n]:変更を行ったファイルの情報を表示する

[-f]:置換するファイルと同じファイル名がが存在しても上書き処理を行う

「/?」:コマンドのヘルプを表示します

最後に

過去にご紹介した「mv」コマンドでもリネームは行なえますが、こちらの「rename」コマンドでは一括でファイル名を変更でき、作業の効率化を図ることが出来ます。ただし注意としてLinusOSの中でもUbuntuだけ書式が異なる点や、ディレクトリも対象になってしまうためリネーム処理を行いたい範囲に注意を払わなければいけない点など、どのコマンド操作時にも共通することですが処理を行う前に確認・注意が必要です。それらを怠った場合、取り返しのつかない事態に発展するかもしれません。そういった失敗を未然に防ぐために日常的に使用されている「rename」コマンドの基礎とオプションを見直してみてはいかがでしょうか。少しでもお役に立てれば幸いです。ここまで読んでいただきありがとうございました。