mvコマンドはファイルの移動と名前変更に用いるコマンドになります。
Linuxコマンドの中で基本的なコマンドのひとつです。
目次
mvコマンドの利用例
ファイルの名前変更
(オプションなし)
mvコマンドはファイルを別の名前に変更することができます。
コマンド例
1 |
mv file.txt rename_file.txt |
コマンド例実行前
1 2 |
$ls file.txt |
実行結果
1 2 |
$ls rename_file.txt |
ファイルの移動
(オプションなし)
mvコマンドは、ファイルを別の場所に移動させることができます。移動先に同じ名前のファイルが存在し、書き込み権限がない場合は、上書きするかどうかを確認します。ファイルを上書きするときに、常に確認をしたい場合は-iオプションを、常に確認をしない場合は-fオプションが便利です。
コマンド例
1 |
mv file.txt dir/rename_file.txt |
コマンド例実行前
1 2 3 4 5 6 |
$tree . ├── dir └── file.txt 1 directory, 1 file |
実行結果
1 2 3 4 5 6 |
$tree . └── dir └── rename_file.txt 1 directory, 1 file |
ディレクトリ関係
(-tオプションと-Tオプション)
ファイルを別のディレクトリに移動するときの構文は以下のどちらかになります。
1 2 |
mv [option]… source… directory mv [option]… -t directory source… |
sourceは移動させるファイル、directoryは移動先のディレクトリです。
また、2つ目の構文について、-tオプションを用いる場合は先にdirectoryを入力します。
コマンド例
1 |
mv file.txt dir |
コマンド例実行前
1 2 3 4 5 6 |
$tree . ├── dir └── file.txt 1 directory, 1 file |
実行結果
1 2 3 4 5 6 |
$tree . └── dir └── file.txt 1 directory, 1 file |
もし、dirがディレクトリならば、そのディレクトリへの移動先のファイルは、移動元のファイルと同じ名前になります。つまり、
1 |
mv file.txt dir |
は
1 |
mv file.txt dir/file.txt |
と等価のコマンドになります。このようなファイルを移動させる処理が意図した処理と違う場合があります。そのような場合は-Tオプションを用います。
例えば、ディレクトリの内容を存在する空のディレクトリに移動させるときに-Tオプションを利用することができます。
コマンド例
1 |
mv -T dir1 dir2 |
コマンド例実行前
1 2 3 4 5 6 7 |
$tree . ├── dir1 │ └── dir1_file.txt └── dir2 2 directories, 1 file |
実行結果
1 2 3 4 5 6 |
$tree . └── dir2 └── dir1_file.txt 1 directory, 1 file |
コマンド例
1 |
mv dir1 dir2 |
実行結果
1 2 3 4 5 6 7 |
$tree . └── dir2 └── dir1 └── dir1_file.txt 2 directories, 1 file |
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$tree . ├── dir1 │ └── dir1_file.txt └── dir2 └── dir2_file.txt 2 directories, 2 files $mv -T dir1 dir2 mv: 'dir1' から 'dir2' へ移動できません: Directory not empty |
上書きしない
(-nオプション)
-nオプションは、移動先に上書きするファイルが存在する場合、上書きを行わず、ファイルは移動しません。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:34 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:34 dir2 ./dir1: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:34 file.txt ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:33 file.txt $ $mv -n dir1/file.txt dir2/file.txt $ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:34 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:34 dir2 ./dir1: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:34 file.txt ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:33 file.txt |
対話モード
(-iオプション)
-iオプションは、ファイルを上書きするようなことを行う場合、ユーザに常に確認を取ります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:36 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:36 dir2 ./dir1: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:36 file.txt ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:34 file.txt $ $mv -i dir1/file.txt dir2/file.txt mv: 'dir2/file.txt' を上書きしますか? y $ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:40 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:40 dir2 ./dir1: 合計 0 ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 22:36 file.txt |
対話モードにしない
(-fオプション)
mvコマンドは移動先のファイルを上書きするときに、書き込み権限がない場合、上書きをするかどうかをユーザに確認します。-fオプションを用いるとユーザに確認をせずにファイルを上書きします。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:10 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:09 dir2 ./dir1: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:10 file.txt ./dir2: 合計 0 -r--r--r-- 1 ubuntu ubuntu 0 10月 21 23:01 file.txt $ $mv -f dir1/file.txt dir2/file.txt $ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:16 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:16 dir2 ./dir1: 合計 0 ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:10 file.txt |
-fオプションを用いずにmvコマンドを利用する場合は、以下のようにユーザに確認します。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:01 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 22:40 dir2 ./dir1: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:01 file.txt ./dir2: 合計 0 -r--r--r-- 1 ubuntu ubuntu 0 10月 21 22:36 file.txt $ $mv dir1/file.txt dir2/file.txt mv: replace 'dir2/file.txt', overriding mode 0444 (r--r--r--)? y $ls -lR .: 合計 8 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:09 dir1 drwxrwxr-x 2 ubuntu ubuntu 4096 10月 21 23:09 dir2 ./dir1: 合計 0 ./dir2: 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:01 file.txt |
ファイルの更新
(-uオプション)
-uオプションは移動させるファイルのタイムスタンプが移動先のファイルのタイムスタンプより新しい場合に上書きを行います(同じ時間の場合は上書きしません)。
コマンド例
1 |
mv -u file2.txt file1.txt |
コマンド例実行前
1 2 3 4 |
$ls --full-time 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 2017-10-21 23:17:57.373609469 +0900 file1.txt -rw-rw-r-- 1 ubuntu ubuntu 0 2017-10-21 23:17:59.869609469 +0900 file2.txt |
実行結果
1 2 3 |
$ls --full-time 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 2017-10-21 23:17:59.869609469 +0900 file1.txt |
移動するファイルを表示
(-vオプション)
-vオプションは、冗長モード(詳細な情報を表示するモード)で移動するファイル名を表示します。
コマンド例と実行結果
1 2 |
$mv -v file1.txt file2.txt 'file1.txt' -> 'file2.txt' |
バックアップ
(-bオプション)
-bオプションで、ファイルが上書きされるときに、その上書きされる前のファイルをバックアップとして保存することができます。
コマンド例
1 |
mv -b file1.txt file2.txt |
コマンド例実行前
1 2 3 4 |
$ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:47 file1.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:17 file2.txt |
実行結果
1 2 3 4 |
$ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:47 file2.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 21 23:17 file2.txt~ |
ロングオプションの--backupオプションを用いるといくつかのバックアップの機能を利用することができます。
バックアップの機能
機能 | 意味 |
none off |
バックアップを作成しない |
numbered t |
常に番号付きのバックアップを作成 |
existing nil |
(デフォルト) 既に番号付きのバックアップが存在するならば、 番号付きのバックアップを作成 それ以外は単純なバックアップを作成 |
simple never |
常に単純なバックアップを作成 |
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:20 file.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:19 file2.txt $ $mv --backup=t file.txt file2.txt $ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:20 file2.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:19 file2.txt.~1~ |
また、バックアップを作成するときに-Sオプションで接尾辞を指定することもできます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:23 file.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:25 file2.txt $ $mv -b -S.bak file.txt file2.txt $ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:23 file2.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:25 file2.txt.bak |
バックアップされるファイルの接尾辞のデフォルトを変更する方法もあります。-Sオプションを利用していない場合のバックアップの接尾辞は、環境変数SIMPLE_BACKUP_SUFFIXの値がつけられます。SIMPLE_BACKUP_SUFFIXが特に設定されていない場合は、デフォルトとして~(チルダ)が使用され、末尾に~をつけたファイルがバックアップとして保存されます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:30 file.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:31 file2.txt $ $SIMPLE_BACKUP_SUFFIX=.bak mv -b file.txt file2.txt $ls -l 合計 0 -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:30 file2.txt -rw-rw-r-- 1 ubuntu ubuntu 0 10月 22 06:31 file2.txt.bak |
参考