mv

Last-modified: 2013-10-09 (水) 17:47:34

参考

一覧

<<文法>>
mv (オプション) 移動元 移動先
mv (オプション) 変更前ファイル名 変更後ファイル名

mvコマンドは、指定されたファイルを指定されたディレクトリに移動します。
実行する際は移動元と異動先は必ず指定しなければなりません。
また、移動先に指定する際、ファイル名も別のものを指定した場合には
ファイル名も変更されます。また、同じディレクトリないで指定した場合は
単純にファイル名の変更を行うことができます。

<<よく使うオプション>>

  • f 移動先に同名ファイルが既に存在する場合、強制的に上書きする
  • i 移動先に同名ファイルが既に存在する場合、上書きするか確認する
  • u 移動先に同名ファイルが既に存在する場合、タイムスタンプが移動元の
      ファイルと同じか新しい場合移動しない

コマンド練習をする前にLinuxにログインして
下記コマンドを実行して実習用ファイルを作成してください。

[pakira@Tiger ~]$ touch data.dat
[pakira@Tiger ~]$ touch out.txt
[pakira@Tiger ~]$ touch test.dat
[pakira@Tiger ~]$ touch tmp.dat
[pakira@Tiger ~]$ mkdir dir1
[pakira@Tiger ~]$ touch /tmp/cp_test.txt
※ファイルは存在しない場合作成してください。
※作成する場合はシステムに影響しないよう注意してください。
※今後はコマンドプロンプトの[pakira@Tiger ~]の箇所は省略します。


▼ファイルを移動する


$ ls ←移動元ファイル一覧を表示
Desktop data.dat dir1 out.txt tmp.dat
cp_test.txt data_new.dat dir2 test.dat

$ ls /tmp ←移動先/tmpディレクトリのファイル一覧を表示
cp_test.txt gconfd-root scim-panel-socket:0-pakira
gconfd-pakira mapping-pakira

$ mv data.dat /tmp ←data.datを/tmpディレクトリに移動
$ ls ←ファイル一覧を表示
Desktop cp_test.txt data_new.dat dir1 dir2 out.txt test.dat tmp.dat
↑data.datが移動元ディレクトリから無くなっている

$ ls /tmp ←/tmpディレクトリのファイル一覧を表示
cp_test.txt gconfd-pakira mapping-pakira
data.dat gconfd-root scim-panel-socket:0-pakira
↑data.datが移動先ディレクトリ/tmpへ移動している


▼移動先に同じファイル名のファイルがある場合、強制的に上書きする


$ ls /tmp ←移動先/tmpディレクトリのファイル一覧を表示
cp_test.txt gconfd-pakira mapping-pakira
data.dat gconfd-root scim-panel-socket:0-pakira
↑cp_test.txtファイルが存在している

$ touch cp_test.txt ←移動先と同じファイル名のファイルを作成

$ mv -f cp_test.txt /tmp ←/tmpディレクトリへcp_test.txtを強制上書き移動

$ ls ←移動元ファイル一覧を表示
Desktop data_new.dat dir1 dir2 out.txt test.dat tmp.dat
↑cp_test.txtが移動元ディレクトリから無くなっている

$ ls /tmp ←移動先/tmpディレクトリのファイル一覧を表示
cp_test.txt gconfd-pakira mapping-pakira
data.dat gconfd-root scim-panel-socket:0-pakira
↑cp_test.txtが存在している

今回コマンド実行したCentOS5.5環境の場合、移動先に同じファイル名の
ファイルが存在しても、オプション「-f」なしでも強制上書きされるように
なっています。

つまり、「mv cp_test.txt /tmp」を実行するだけで
強制上書き移動になりますので注意が必要です。


▼移動先に同じファイル名のファイルが存在する場合、上書きするか確認する


$ touch cp_test.txt ←移動先と同じファイル名のファイルを作成

$ mv -i cp_test.txt /tmp/ ←/tmpディレクトリへcp_test.txtを上書き確認して移動
mv: \`/tmp/cp_test.txt\' を上書きしてもよろしいですか(yes/no)? y
       ↑上書きするかの確認 (y=yes n=no)


▼移動先ファイルのタイプスタンプが移動元と同じか新しい場合、移動しない


$ ls -l /tmp/cp_test.txt

  • rw-rw-r-- 1 pakira pakira 0 1月 27 20:32 /tmp/cp_test.txt
    ↑/tmp/cp_test.txtファイルのタイプスタンプを確認する
    「20:32」に作成されています。

$ touch cp_test.txt ←移動元と同じファイル名のファイルを作成

$ ls -l cp_test.txt

  • rw-rw-r-- 1 pakira pakira 0 1月 27 20:35 cp_test.txt
    ↑cp_test.txtファイルのタイプスタンプを確認する「20:35」に作成されています。

$ mv -u /tmp/cp_test.txt ./cp_test.txt
↑オプション「-u」を付けて移動を実行する

$ ls -l /tmp/cp_test.txt

  • rw-rw-r-- 1 pakira pakira 0 1月 27 20:32 /tmp/cp_test.txt
    $ ls -l cp_test.txt
  • rw-rw-r-- 1 pakira pakira 0 1月 27 20:35 cp_test.txt
    ↑移動元ファイルも移動先ファイルも両方存在しており、タイムスタンプにも
    変化がないため、移動していないことがわかります