Linuxのmvコマンドでファイルやディレクトリを移動する方法!名前の変更方法も解説!
Linuxの基本コマンドの「mv」は、ファイルやディレクトリを移動させるためのコマンドです。単に移動するだけではなく、ファイルの名前を変更したり、オプションを使うことで上書きを回避したりできます。本記事では、そんなLinuxのmvコマンドについて説明します。
目次
Linuxのmvコマンドについて
Linuxの「mv」コマンドの名前は「move」から採られており、その名前の通りファイルやディレクトリ(フォルダ)を移動させるコマンドです。なお、mvとよく似た機能を持つLinuxのコマンドに「cp」がありますが、こちらは「copy」から名前が採られていることからわかる通り、移動ではなくコピーするコマンドです。
mvとcpの違いについてはのちほど「Linuxのmvコマンドとcpコマンドについて」の章で詳しく説明します。
mvコマンドって何?
Linuxのmvは、基本的にはファイルやディレクトリ(フォルダ)を移動させるコマンドですが、ファイルの移動先にファイル名を指定することでファイル名の変更にも利用できます。
mvコマンドの書き方解説
Linuxのmvコマンドは、以下のように使用します。
mv [オプション] 移動させたいファイル・ディレクトリ 移動先のファイル・ディレクトリ
このとき、mvはデフォルトでは上書きモードで動作します。そのため、移動後のリネームしたファイル名と同じファイルがあった場合は、元のファイルは消されてしまうので注意が必要です。のちほど「Linux mvのオプションを解説」でお伝えする、上書き確認用オプションを常用することをおすすめします。
また、mvでは移動させたいファイルを複数指定することも可能です。この場合は最後に移動先のディレクトリを指定し、以下のように記します。
mv [オプション] 移動させたいファイル1 ファイル2…… 移動先のディレクトリ
Linuxのmvコマンドの基本の使い方
ここからは、前章の最後の節でお伝えしたLinuxのmvコマンドの使い方を具体例とともに説明します。
移動方法
まずはmvコマンドの基本中の基本である、単純にファイルやディレクトリ(フォルダ)を移動させる方法です。
ファイルを移動する場合
最初に紹介するのは、単純にファイルを移動させる場合のmvの使用例です。「今いるディレクトリ(フォルダ)のtest.txtを、"/home/applica/"ディレクトリへ移動させる」という場合は、以下のように記します。
mv test.txt /home/applica/
mvを使って複数のファイルを移動させる場合は、次の「複数ファイルをまとめて移動する」の節で説明します。
ディレクトリ(フォルダ)を移動する場合
先ほどはmvを使ってファイルを移動させる場合について説明しましたが、mvを使ってディレクトリ(フォルダ)を移動させる場合もまったく変わりはありません。mvを使って「今いるディレクトリにある"test"ディレクトリを"/home/applica/"ディレクトリへ移動させる」という場合は、以下のように記します。
mv test /home/applica/
移動時の注意点について
mvコマンドを使ったファイルの移動時に注意しなければならないのが、移動先に指定したディレクトリ(フォルダ)がちゃんと存在しているかということです。もし存在しない場合には、ファイル名がそのディレクトリ名に変更されて移動されます。
つまり、「/home/」ディレクトリに「applica」ディレクトリがなかった場合、前々節の「mv test.txt /home/applica/」を実行すると、「/home/」ディレクトリに「test.txt」が「applica」という名前にリネームされて移動してしまうのです。
あらかじめディレクトリの有無を確認してmvコマンドを使ったとしても、タイプミスによってリネームされて移動する可能性もあるので気をつけてください。
mvコマンドを使ったファイルの移動と同様、ディレクトリを移動する場合も、移動先に指定したディレクトリがすでに存在していると問題が起きます。
mvで指定した移動先のディレクトリが空のディレクトリならばいいのですが、そのディレクトリ内にすでにファイルやサブディレクトリが存在していると、エラーが表示されてディレクトリの移動ができませんので、注意してください。
複数ファイルをまとめて移動する
Linuxのmvを使うと、複数のファイルをまとめて移動させることもできます。この場合は、以下のようにmvのあとに複数のファイル名を連続して入力し、最後に移動先のディレクトリを示します。
mv test1.txt test2.txt test3.txt /home/applica/
特定の名前が含まれるファイルをまとめて移動する
Linuxのmvコマンドでは、0文字以上の任意の文字を表す「*」や、任意の1文字を表す「?」といったワイルドカードも使えます。そのため、今いるディレクトリにある「test1.txt」から「test9.txt」までをまとめて移動させる場合は、以下のように簡単な記述が使えます。
mv test?.txt /home/applica/
ただし、この場合「testx.txt」などがあっても移動させられてしまいますし、「test10.txt」は一緒に移動できません。「testx.txt」などの「text」で始まる移動させたくないファイルがなく、「test10.txt」もまとめて移動させたい場合は、「*」を使って以下のように記述してください。
mv test*.txt /home/applica/
名前を変更(リネーム)する方法
つづいては、Linuxのmvコマンドを使ってファイル名やディレクトリ名(フォルダ名)を変更する方法です。
ファイル名を変更する場合
Linuxのmvコマンドでファイル名を変更させる場合は、移動先を変更するファイル名に変えるだけです。
mv test.txt applica.txt
とすれば、「test.txt」が「applica.txt」にリネームされます。また、移動とファイル名の変更を同時に行うことも可能です。「test.txt」を「applica.txt」にリネームして「/home/applica/」ディレクトリに移動するには以下のように記します。
mv test.txt /home/applica/applica.txt
なお、先にも記しましたが、すでにapplica.txtが存在していても、オプションなしのmvコマンドは警告なしで上書きしてしまいますので、注意が必要です。
ディレクトリ名(フォルダ名)を変更する場合
mvコマンドでディレクトリ名(フォルダ名)を変更する場合も、ファイル名を変更する時と同じです。
mv test applica
とすれば、「test」ディレクトリが「applica」ディレクトリにリネームされます。
Linux mvのオプションを解説
ここからはLinuxのmvコマンドのオプションを説明します。最初に主なオプションを挙げたのち、そのうちのいくつかのオプションの使い方を説明します。
主なオプションの一覧
Linuxのmvの主なオプションを以下に示します。
短い | 長い表記 | 意味 |
---|---|---|
-f | --force | 移動先の同名ファイルを確認せずに上書きする(デフォルト) |
-i | --interactive | 移動先に同名ファイルがある場合は確認する。詳細後述 |
-n | --no-clobber | 移動先に同名ファイルがある場合は上書きしない |
-u | --update | 移動先の同名ファイルのタイムスタンプが古い場合のみ上書き移動する |
-t ディレクトリ名 | --target-directory=ディレクトリ名 | 指定したディレクトリ(フォルダ)に移動する |
-T | --no-target-directory | 移動先がディレクトリ名であっても、そのディレクトリ下に移動するのではなく、その名前にリネームして移動する |
なし | –strip-trailing-slashes | 移動前のファイル・ディレクトリ名の末尾の「/」を削除する |
-b | --backup=方法 | 上書きされるファイルのバックアップを作成。詳細後述 |
-S | --suffix=接尾辞 | バックアップ作成時にファイル名の末尾に付ける文字を指定 |
-v | --verbose | ファイルの移動の経過を表示 |
オプションの使い方
オプションは、Linuxのほかのコマンド同様、mvコマンドの直後に記述します。
-b(--backup)オプションとは?
Linuxのmvにおいて、-bオプションは非常によく使われるオプションです。
mv -b test.txt applica/
たとえば上のように指定した場合、すでに「applica」ディレクトリ(フォルダ)内に「test.txt」が存在していると、そのファイルは「test.txt~」と末尾に「~」がついた形でバックアップされ、新たに「test.txt」が移動されます。このとき、「--backup」も同様に利用でき、こちらを使うとバックアップファイルの接尾語を指定できます。
- --backup=t(or numbered)……「~」の代わりに番号を振った拡張子を追加する
- --backup=nil(or existing)……すでに同名のバックアップファイルがある場合、それに倣って処理する
-i(--interactive)オプションとは?
-i オプションも、Linuxのmvにおいて非常によく使われるオプションです。
mv -i test.txt applica/
たとえば上のように指定した場合、すでに「applica」ディレクトリ(フォルダ)内に「test.txt」が存在していると上書きすべきかを以下のように尋ねてきます。
mv: overwrite 'test.txt' ?
これに対し、「yes」や「y」と応えると上書きされ、「no」や「n」、あるいはなにも入力せずにEnterキーを押すとファイルは上書きされずにmvが中止されます。
Linuxのmvコマンドとcpコマンドについて
mvとよく似た使い方をされるLinuxコマンドにcpがあります。mv同様、コピー先でファイルの名前を変えることもディレクトリのコピーも可能ですし、複数のファイルをまとめてコピーできる上に、いくつか同じ働きをするオプションもあります。
mvとcpの違いとは?
mvが「move」の略であるように、cpは「copy」の略です。一番の違いは元のファイルがcpはコピーなので残るのに対し、mvでは移動なので元のファイルが残らないということです。しかし、それ以外にも似て非なる点があります。
権限を保つ場合はcpコマンドがオススメ
mvとcpの違いを、今いるディレクトリ(フォルダ)から「/home/applica」ディレクトリに「text.txt」を移動、もしくはコピーして確かめます。
mv test.txt /home/applica/
cp test.txt /home/applica/
このとき、新たに「/home/applica/」に作成されるファイルは、
- mv……元のファイルと同じ権限、タイムスタンプ
- cp……新たな権限、cpを行ったときのタイムスタンプ
となります。そのため、mvを使うと「/home/applica/」の権限が及ばないファイルが作成されてしまい、ほかの「/home/applica/」のファイルとの整合性がとれなくなる場合があります。
ファイル入れ替えにおいてmvは使用してはいけない
前項で触れたように、mvを-fオプションをつけて同じ名前で上書きすると、内容のみならずそこにあったファイルとタイムスタンプや権限が変更されてしまいます。
ファイル入れ替えで権限が上書きされる可能性がある
特に致命的なのが、ローカル端末で更新した設定ファイルなどをサーバーにアップロードし、所定のディレクトリに移動させる場合です。このときにmvコマンドを使用すると、ここまででお伝えしたように権限や所有者が変更されてしまい、正常に動作しなくなる可能性があります。
こういう場合はcpを使うことで、権限や所有者が変わらないようにすることが必要です。
Linuxでmvコマンドを使ってファイルの移動をしてみよう
以上お伝えしたように、Linuxのmvコマンドはファイルやディレクトリ(フォルダ)の移動や名前の変更に使える便利な基本コマンドです。シンプルで便利な反面、デフォルトでは問答無用で同名ファイルを上書きしてしまいますので、「-i」オプションや「-b」オプションをうまく使って、安全にmvを利用してください。