Linuxオペレーティングシステムは初めてですか?もしそうなら、ファイルやフォルダの名前を変更するなどの一般的なタスクは、あなたが慣れているものとは異なるかもしれません。しかし心配しないでください。Linuxでのファイル名の変更の概念は、他のオペレーティングシステムでの方法と似ています。
このチュートリアルでは、GUIを使用してLinuxで単一および複数のファイルをリネームする方法について、GUIとターミナルでのコマンド実行の両方を学びます。
さあ始めましょう!
前提条件
このチュートリアルに従うには、次のものが必要です:
- このチュートリアルではUbuntu 18.04 LTSを使用しますが、他のLinuxディストリビューションでも動作します。
- sudo/administratorアクセス権を持つアカウント。
ファイルマネージャを使用してLinuxでファイルの名前を変更する
GUIを使用してファイルを管理することに慣れている場合、ファイルマネージャを使用してファイルの名前を変更するこのチュートリアルを始めましょう。GUIファイルマネージャは、ファイルを見ることができるので便利です。Linuxで利用可能なファイルマネージャの一つは、GNOMEの以前のファイルマネージャであるNautilusです。このチュートリアルでは、Nautilusファイルマネージャを使用してファイルの名前を変更する方法を示します。
Linuxの他のファイルマネージャーには、Konqueror、Dolphin、Krusader、Thunar、Nemoファイルマネージャー、Sunflowerファイルマネージャーがあります。これらのファイルマネージャーは同じタスクを実行しますが、ファイルやディレクトリの名前の変更方法は若干異なる場合があります。
ターミナルを起動し、まだインストールされていない場合は、以下のコマンドを実行してNautilusをインストールします(install nautilus
)。sudo
コマンドは、sudo/管理者権限でコマンドを実行します。
単一ファイルの名前変更
Nautilusで単一ファイルの名前変更は、Windowsファイルエクスプローラーと同様に、数回のクリックで行えます。
ファイルを単体でリネームするには、Nautilusを開き、リネームしたいファイルを右クリックし、Renameを選択してください。下図に示すように。
この例ではファイルのリネームに焦点を当てていますが、ファイルとディレクトリの両方をリネームする手順は同じです。

新しいファイル名を入力して元のファイル名を置き換え、Enterキーを押すか、Renameをクリックして完了です。

Nautilusファイルマネージャを使用して複数のファイルをリネームする
Windowsと同様に、Ubuntuでは一度に複数のファイルのリネーム方法を選択できます。
複数のファイルをリネームするには、リネームしたいすべてのファイルを選択し、そのうちのいずれかを右クリックし、Renameを選択します。ポップアップウィンドウが表示され、選択したファイルのリネーム方法を選択できます。

以下には、選択したファイルのリネーム方法に応じて2つのオプションがあります。
- テンプレートを使用してリネーム – これにより、ファイルを増分でリネームできます。
- テキストの検索と置換 – ファイル名で特定のテキストを検索して置換できます。
テンプレートを使用したファイルのリネーム
ファイルをテンプレートを使用してリネームするには、テンプレートを使用してリネームオプションを選択します。
空のフィールドに置換名を入力して、+Addボタンをクリックし、テンプレートから選択します。このチュートリアルでは、最初のテンプレート(1,2,3,4)を選択し、Renameをクリックします。このオプションは、置換ファイル名の後に各ファイルに増分番号を追加します(Text1、Text2、…)。

ファイル名が変更され、増加する数字に続くTextに変更されました。

ファイル名で単語を検索して置換する
特定のファイル名で複数のファイルの名前を変更するには、テキストの検索と置換オプションを選択します。
既存のテキストフィールドにテキストを入力し、置換するテキストフィールドに置換テキストを入力し、名前を変更をクリックしてテキストを置換します。このオプションは、ファイル名で特定のテキストを検索して置換します。

これで、各ファイル名で単語「Text」が「File」に置換されたことがわかります。

mv
コマンドを使用してファイル名を変更する
GUIではなくコマンドを実行することが好きな場合、ターミナルでファイルの名前を変更する方法を学ぶ準備をしましょう。Linuxターミナルでのファイル名の変更は、PowerShellなどの他のコマンドライン環境での変更と似ています。元のファイル名をターゲットのファイル名に変更するコマンドを実行し、それで終わりです。
ファイル名を変更する場合には2つのシナリオがあります。1つ目は、作業ディレクトリからファイルの名前を変更することです。2つ目は、完全なパスを指定して行います。ファイル名を変更するためのmv
コマンドの構文を以下に示します。ここでsource
は元の名前であり、destination
は置換名です。
mv
コマンドを使用して単一のファイルの名前を変更
mvコマンドの構文がまだ頭に残っている状態で、単一のファイルの名前を変更してみましょう。
単一のファイルとディレクトリの名前を変更する方法を示すために、以下の手順を実行します。
1. ターミナルを起動し、以下のコマンドを実行してディレクトリと2つのテキストファイルを作成します。
2. 次に、ls
コマンドを実行して作業ディレクトリ内のファイルをリストします。下記の例では、file1.txtとfile2.txtが~/testディレクトリ内に存在することがわかります。

3. 以下のいずれかのmv
コマンドを実行して、file1.txt
をfile10.txt
に名前を変更します。
ディレクトリの名前を変更する場合も、次のようにファイル名を変更します:
mv ~/test ~/demo
。~
記号はホームディレクトリを示します。
4. 最後に、ls
コマンドを再実行して作業ディレクトリ内のファイルをリストします。
下記の例では、file1.txtはfile10.txtに名前が変更されていることがわかります。

Forループを使用して複数のファイルの名前を変更する
もし他のタスクで忙しく、一括ですべてのファイルの名前を変更したい場合は、以下のようなforループステートメントを使用する必要があります。
以下のコードをそのままコピーし、ターミナルに貼り付けてEnterキーを押してください。このコードは、作業ディレクトリ内の各テキストファイルをスキャンし、「File」という文字列の後に連番が続く名前に変更します。
ターミナルにコードを貼り付けることもできますが、良い習慣としては、代わりにスクリプトファイルを作成して実行する方が良いです。
以下では、コードがすべてのファイルの名前を変更する様子が実際に動作しているのが見えます。

Linuxでのrename
ユーティリティを使用したファイルの名前変更
もし日常的に単一のファイルの名前を変更する場合は、mv
コマンドで十分です。しかし、一度に同じパターンで複数のファイルの名前を変更したい場合はどうでしょうか? 例えば、特定の単語(ファイル)で始まるファイルの名前を変更する場合です。その場合は、代わりにrenameユーティリティをインストールしてください。
renameユーティリティは複数のファイルの名前を変更し、ファイル名の形式を変更し、ファイルを上書きします。
renameユーティリティをインストールするには、作業しているLinuxディストリビューションに応じて、以下のいずれかのコマンドを実行してください。
以下にrename
コマンドの構文を示します。
複数のファイルの名前を変更
rename
コマンドの構文を考慮すると、同じパターンを持つファイルの名前を変更できます。 rename
コマンドの素晴らしい点は、複数のファイルの名前を変更するためにループ関数を宣言する必要がないことです。
おそらく、特定の単語が含まれるファイルの名前を変更したいのでしょう。それであれば、以下のサンプルコマンドの中のPerl正規表現('s/file/myfile/'
)をご覧ください。Perl正規表現は、Perlプログラミング言語に基づいた文字列パターンを定義します。
他のファイルを誤ってリネームしないようにするには、リネーム前に-n
オプションを追加して、影響を受けるすべてのファイルをリストアップしてください。

次に、作業ディレクトリまたは~/test/*.txt
ディレクトリ内の各テキストファイルの名前に含まれるfile
という単語をmyfile
に置き換えるために、次のrename
コマンドのいずれかを実行してください。
Perl式('s/file/myfile/'
)では、s
は置換を示しており、ファイルのリネームを意味します。-v
オプションが追加されていることに注意してください。これにより、コマンドがどのファイルをリネームしたかが表示されます。
下の例では、テキストファイル内の各 “file” が “myfile” にリネームされているのが見て取れます。

rename
Command すべてのファイル名を変更する場合は、ファイルパスを指定する際にファイル拡張子を削除してください。例:
rename -v 's/file/myfile/' ~/test/*
ファイル拡張子の変更
rename
コマンドは、ファイル名だけでなく、ファイル拡張子も変更します。誤った拡張子のファイルを作成したかもしれません。その場合、rename
コマンドを実行する際に、変更したいファイル拡張子をPerl式で指定します。
rename
コマンドを使用して、~/test
ディレクトリ内のすべてのファイル(*
)の拡張子を.txt
から.html
に変更するには、以下のコマンドを実行します。Perl式の中の$
シンボルは、各ファイル名の文字列の末尾(.txt
)に一致し、そのため、コマンドは.txt
ファイル拡張子のみを変更します。複数のファイル名を変更する場合と同様に、-v
オプションを追加して、コマンドが行う変更をリストします。
代わりにすべてのファイル拡張子を削除する場合は、Perl式の置換文字列を削除します。例:
rename -v 's/.txt$//' *.txt
以下の画像に示されているように、.txtの拡張子が.htmlに変更されました。

ファイル名を大文字と小文字に変更する
ファイル拡張子が間違っている代わりに、ファイル名が小文字であるか大文字であるかについて悩んでいるかもしれません。特定のファイルを大文字で検索しようとしているが、ファイル名が小文字であることを知らないかもしれません。
Linuxは大文字と小文字を区別するため、各ファイル名の大文字と小文字を正確に確認しましょう。大文字と小文字の違いは基本的に、小文字と大文字のテキストの区別です。
以下のどちらかのrename
コマンドを実行して、作業ディレクトリ(*
)内のすべての小文字(a-z
)ファイル名を大文字(A-Z
)に変更するか、その逆に変更します。
以下に、ファイル名の大文字と小文字を変更した結果が示されています。

ファイル名内のスペースの置換と削除
ファイル名の大文字と小文字のように、ファイル名にスペースが含まれている場合は、ファイルを見つける際に問題が発生する可能性があります。これを解決するために、スペースを別の文字に置換するか、スペースを完全に削除します。
rename
コマンドを以下に実行して、作業ディレクトリ内のすべてのファイル名のスペースをアンダースコア(_
)で置換します。アンダースコアはメタキャラクタであるため、バックスラッシュ(\\_
)を使用してアンダースコアを文字通りに宣言します。メタキャラクタはコンピュータプログラム内で特別な意味を持つ特別な文字です。
Perlの式の中のg
は、コマンドに全ての一致箇所(スペース)を置換するよう指示します。
以下では、コマンドが全てのスペースをアンダースコアに置換したことがわかります。

文字を埋める代わりにファイル名から全てのスペースを削除するには、以下のコマンドを実行してください。
以下のPerlの式では、空白スペース(/ *
)の後ろのアスタリスクは、ファイル名内の全てのスペースに一致し、最初の一致箇所だけではありません。置換文字は空(//
)なので、rename
コマンドは全ての(g
)スペースを削除します。
以下の結果で、各ファイル名から全てのスペースが削除されていることがわかります。

ファイル名の各単語の最初の文字を大文字にする
ファイル名にスペースを保持し、代わりに各単語の最初の文字を大文字にする場合、より複雑なPerlの式が必要です。以下のサンプルコマンドをご覧ください。
以下のPerlの式では、単語境界(\\b
)内のピリオドやアポストロフィ以外の任意の1文字(\\w
)に一致します(?<![.'\\'']
)。rename
コマンドはその文字を大文字に変換します(u$&
)。
以下の結果で、ファイル名の各単語が大文字で始まり、ファイルの拡張子は変更されていないことがわかります。

結論
このチュートリアルを通じて、GUIとコマンドラインターミナルを使用してLinuxファイルの名前を変更するさまざまな方法を学びました。今や、1つまたは複数のファイルの名前を操作する方法について確固たる理解があります。
なぜLinuxシェルスクリプトを学んで、Linuxでファイルの名前を自動で変更するスクリプトを作成しないのですか?