blog

技術|ターミナルの基本:Linuxでファイルとディレクトリの名前を変更する

この基本的なコマンドラインのチュートリアルでは、Linux ターミナルでファイルやディレクトリの名前を変更する様々な方法を学びます。...

Oct 28, 2025 · 5 min. read
シェア

この基本的なコマンドラインのチュートリアルでは、Linuxターミナルでファイルやディレクトリの名前を変更するさまざまな方法を学びます。

Linuxターミナルでファイルやディレクトリの名前を変更するには?mvコマンドを使うことができます。

そう、ファイルやフォルダをある場所から別の場所に「移動」するのに使うのと同じmvコマンドです。

ファイルやディレクトリの移動」の際に、ファイルやディレクトリの新しい名前を指定するだけです。

ファイル名を変更するには

  1. mv old_file new_file

同様に、ディレクトリの名前を変更するには、次のようにします:

  1. mv old_dir new_dir

簡単そうでしょう? しかし、ここではファイル名の変更について詳しく説明します:

  • リネームの実際の例を示します。
  • findコマンドとexecコマンドを組み合わせて複数のファイル名を一括変更する例を示します。
  • ファイル名の一括変更のための特別なプログラムについての議論

ひとつひとつ見ていきましょう。

mvコマンドによるファイルとディレクトリの名前変更

同じディレクトリ内のファイル名を変更するには、mvコマンドを使用します:

  1. mv file1.txt file2.txt

同様に、同じ場所にあるディレクトリの名前も変更できます:

  1. mv dir1 dir2

これは私がファイル名とディレクトリ名をどのように変更するかの例です:

ご覧のように、 cpコマンドと違ってmv コマンド ディレクトリを扱うのにrecursiveオプションを使う必要はありません。

同じ名前でファイル名を変更しようとすると、エラーが表示されます。

また、ファイルを別の場所に移動するときに、ファイル名を変更することもできます:

  1. mv old-file-name another_dir/new-file-name

次の例では、 firefox-quiz.txt 名前のファイルをexampleディレクトリに移動します。その際、quiz.txtにリネームしています。

切り貼り作業だと思っています。

複数のファイルを別の場所mv file1 file2 file2 dir移動することはできますが、mv を使って複数のファイルの名前を変更することはできません。リネームするには、次のセクションで説明する他の方法を使う必要があります。

mv、find、execコマンドを組み合わせて、パターンに一致する複数のファイルの名前を変更します。

このようなファイル名を一括で変更する場合は、特に注意してください。一歩間違えれば、元に戻せない望ましくない結果を招く可能性があります。

findコマンドは、ファイル名、タイプ、更新時間、その他のパラメータに基づいて、指定されたディレクトリ内のファイルを検索するために使用されます。execコマンドは、findコマンドの 結果に対してコマンドを実行するために、findコマンドと組み合わせて 使用されます。

find、exec、mvコマンドの使い方に標準的な構造はありません。必要に応じて組み合わせてください。

カレントディレクトリにある.txtで終わるすべてのファイルの名前を、_oldを付けて変更したいとします。つまり、file_1.txtは file_1.txt_old なり、以下同様になります。

  1. find . -type f -name "*.txt" -exec mv {} {}_old ;

これは一例であり、リネームの要件は異なる場合があります。また、上記はスペースを含まないファイル名にのみ適用されます

PRO TIP: このような一括アクションを扱う場合、実際に実行するのではなく、echoコマンドを使ってどのようなアクションが実行されるかを確認するのが賢い方法です。よさそうであれば、実際のアクションを実行します。

例えば、まずどのファイルの名前が変更されるかを確認します:

  1. find . -type f -name "*.txt" -exec echo mv {} {}_old \;

ご覧の通り、実際にはファイル名は変更されていません。しかし、fallbackコマンドを使わずに上記のコマンドを実行すると、どのようなコマンドが実行されるかがわかります。

それでよければ、echoコマンドを削除して、実際の名前の変更を進めてください。

  1. find . -type f -name "*.txt" -exec mv {} {}_old \;

このトリックは『Efficient Linux Command Line』という本で学びました。このような珠玉の小技が満載の素晴らしい本です。 私のお気に入りのLinux本のひとつになったのも不思議ではありません。

renameコマンドで複数のファイル名を簡単に変更

Perlの正規表現パターンに基づいてファイル名を一括変更するrenameという便利なコマンドライン・プログラムがあります。

このユーティリティはGNUツールチェインの一部ではなく、プリインストールされていません。したがって、まずディストリビューションのパッケージマネージャを使ってインストールする必要があります。

Debian/Ubuntuの場合、コマンドは次のようになります:

  1. sudo apt install rename

次のような使い方ができます:

  1. rename [options] perl_regex [files]

オプションは以下の通りです:

  • -v : 詳細モード
  • -リネームされるファイルを表示しますが、リネームは行いません。
  • mv file1.txt file2.txt
  • -f : 既存のファイルを強制的に上書き
  • -s : ソフトリンクの名前を変更しません。

では、前のセクションで見たのと同じ例を使ってみましょう。.txtを.txt_oldにリネームします。

  1. rename 's/\.txt$/.txt_old/' **

ここでは正規表現の説明はしません。** は、すべてのサブディレクトリのすべてのファイルを表示することを意味します。

ご覧の通り、期待通りに機能しています。

まとめ

Linuxのコマンドラインで基本的なタスクを実行できるようになるためのヒントを楽しんでいただけたら幸いです。もちろん、これはコマンドラインを学んで使いたい人を対象にしています。デスクトップ・ユーザーには、このようなタスクのために常にGUIツールがあります。

Linuxコマンドに全く慣れていない方にとって、このシリーズは大きな助けとなるでしょう。

ご質問やご提案がありましたら、お知らせください。

経由: ---es/

Read next