連載
» 2016年06月13日 05時00分 UPDATE

Linux基本コマンドTips(22):【 mv 】コマンド――ファイルやディレクトリを移動する/名前を変更する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「mv」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルやディレクトリを移動するための「mv」コマンドです。また、mvコマンドは、ファイル名やディレクトリ名の変更にも使用できます。

mvコマンドとは?

 「mv」は、ファイルやディレクトリを移動したり、リネームしたりするコマンドです。「mv ファイル 移動先ディレクトリ」とすると、ファイルが指定したディレクトリに移動されます。異動先にファイル名を指定した場合は、「ファイルからファイルへの移動=リネーム」となります。この場合、既存のファイルを指定すると「上書き」となります。


mvコマンドの書式

mv [オプション] 移動元 移動先

mv [オプション] ファイル1 ファイル2…… 移動先ディレクトリ

※[ ]は省略可能な引数を示しています



mvコマンドの主なオプション

 mvコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-f --force 移動先に同名ファイルがあっても確認せずに上書きする
-i --interactive 上書き前に確認する
-n --no-clobber 既存のファイルを上書きしない
-u --update 移動先にある同名ファイルのタイムスタンプが同じ、または新しい場合は移動しない
-t ディレクトリ名 --target-directory=ディレクトリ名 「-t」で指定したディレクトリに移動する
-T --no-target-directory 移動先(最後の引数)がディレクトリでも特別扱いしない(「cp」コマンド[応用編その1]参照
--strip-trailing-slashes 移動元ファイルの最後にあるスラッシュ(/)を取り除く
-b --backup=方法 上書きされるファイルのバックアップを作る(「ln」コマンド参照
[方法]:「numbered」または「t」の時は番号の添え字、「simple」または「never」の時は、ファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の時は既にあるファイルに従う(ない場合はで「simple」と同じ)
-S --suffix=接尾辞 バックアップファイルを作る際の、ファイル名末尾に付ける文字(無指定時は、「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う)
-v --verbose 経過を表示する
※「-f」「-i」「-n」を同時に使った場合は、最後に指定したものが有効になります


ファイルを移動する

 「mv ファイル1 ディレクトリA」と指定すると、「ファイル1」が「ディレクトリA」に移動されます。「mv ファイル1 ファイル2 ファイル3 ディレクトリA」のように、複数のファイルを指定することもできます。

コマンド実行例

mv ファイル1 ディレクトリA

mv ファイル1 ファイル2 ファイル3 ディレクトリA


$ ls -F
dir1/  file1.txt  file2.txt  file3.txt(カレントディレクトリにはファイル「file1.txt」「file2.txt」「file3.txt」と、ディレクトリ「dir1」がある。「-F」はファイルの種類を末尾に表示するオプション。ディレクトリの場合は「/」記号が表示される)
$ ls -F dir1/
$	(「dir1」には何もない)
$ mv file*.txt dir1/	(「file*.txt」を「dir1」へ移動。メッセージは表示されない)
$ ls -F
dir1/	(カレントディレクトリにあるのは「dir1」のみ)
$ ls -F dir1/
file1.txt  file2.txt  file3.txt	(「dir1」内に「file1.txt」「file2.txt」「file3.txt」が移動された)
$ mv dir1/file*.txt .	(「dir1」内の「file*.txt」をカレントディレクトリに移動)


ファイル名を変更する

 「mv ファイル1 ファイル2」のように、名前を2つ指定して、かつ、2つ目の引数(移動先)がディレクトリではない場合は「リネーム」の動作になります。

 移動先に同名ファイルがある場合は、つまり、2番目に指定したファイルが既に存在している場合は「上書き」になるので注意しましょう。「-i」オプションを付けると上書きを確認しながら、また「-n」オプションを付けると上書きを禁止できます。

コマンド実行例

mv ファイル1 ファイル2

(「ファイル1」の名前を「ファイル2」にする)


$ ls -F file*
fileA.txt	(「fileA.txt」がある)
$ mv fileA.txt fileB.txt	(「fileA.txt」を「fileB.txt」へ移動(「fileA.txt」の名前が「fileB.txt」になる、という動きになる))
$ ls -F file*
fileB.txt	(「fileB.txt」がある(「fileA.txt」が「fileB.txt」になった))

	(mvコマンドでファイルが上書きされるテスト)
$ touch fileA.txt	(サイズ0の新規ファイル「fileA.txt」を作成)
$ ls -F file*
fileA.txt  fileB.txt	(「fileA.txt」と「fileB.txt」がある)
$ mv fileA.txt fileB.txt	(「fileA.txt」を「fileB.txt」へ移動)
$ ls -F file*
fileB.txt	(「fileA.txt」が「fileB.txt」に移動。元の「fileB.txt」は上書きされている)


ディレクトリを移動する際の注意点

 ディレクトリ名を変更する場合は、「mv dir1 dir2」のように指定します。ディレクトリ「dir2」が既に存在している場合は、“「dir1」を「dir2」の中へ移動”という扱いになります。なお、「dir2」内に既にファイルやサブディレクトリがある場合は、エラーとなって移動することはできません。

 また、mvコマンドも「cp」コマンド(本連載第18回)と同様に、「-T」オプションを使用できます。「mv -T dir1 dir2」と指定すれば、「dir2」が既に存在していても、「dir2」内への移動ではなく、“「dir1」が「dir2」になる(リネームされる)”という動作になります。


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。