mv

2009.07.10 更新

ファイル/ディレクトリを移動する

対応OS: linux , freebsd , solaris
mv [-i|-f] [-v] [-b[S SUFFIX]] [-u] FILE PATH
mv [-i|-f] [-v] [-b[S SUFFIX]] [-u] FILE... DIR

 mvコマンドは、FILEに指定したファイルもしくはディレクトリを移動します。PATHには、移動後のファイルもしくはディレクトリのパスを指定します。移動前と移動後で異なる名前を指定して、ファイル名やディレクトリ名を変更することもできます。

 また、単一もしくは複数のファイルのパスをFILE...に指定して、DIRに指定したディレクトリ内に移動することもできます。

オプション
① -i
移動先に同一名のファイルまたはディレクトリが存在する場合に、上書きするか否かを問い合わせます。
② -f
移動先に同一名のファイルやディレクトリが存在しても、問い合わせなしに上書きします。
③ -v [Linux][FreeBSD]
処理内容を出力します。
④ -b[S SUFFIX] [Linux]
移動により、上書きまたは削除されるファイルのバックアップを作成します。「SUFFIX」には、バックアップファイルのサフィックスを指定します。「SUFFIX」を指定しなければ、環境変数「SIMPLE_BACKUP_SUFFIX」に設定されている値を使用します。この環境変数が設定されていない場合には、「.」を使用します。
⑤ -u [Linux]
移動先に同一名のファイルやディレクトリが存在する場合、最終更新日付が新しくなる場合にだけ上書きします。
サフィックス

 サフィックスとは、文字列データの末尾を意味しますが、ここではバックアップファイルに付ける文字を示します

引数
① FILE
移動元のファイルまたはディレクトリのパスを指定します。
② PATH
移動先のファイルまたはディレクトリのパスを指定します。
③ FILE...
複数の移動元のファイルのパスをスペースで区切って指定します。ワイルドカードによる指定も可能です。
④ DIR
移動先のディレクトリのパスを指定します。FILE...に指定したファイル群は、このディレクトリ内に元のファイル名で移動されます
ファイルを移動する
$ ls -l dir01/file* 
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 dir01/file01
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 dir01/file02
$ ls -l dir02
合計4
drwxrwxr-x 2 cmd cmd 4096 4月15 00:57 dir03
$ mv dir01/file01 dir02
ファイル「dir01/file01」をディレクトリ「dir02」内に移動
$ ls -l dir01/file*
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 dir01/file02
移動元のファイルは消滅
$ ls -l dir02
合計8
drwxrwxr-x 2 cmd cmd 4096 4月15 00:57 dir03
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01
移動後のファイル
$
同一名ファイルが存在する場合の移動
$ ls -l file* 
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 21:33 filem1
$ mv -i file01 filem1
mv: 'filem1' を上書きしてもよろしいですか(yes/no)? n
上書きするかどうかの問い合わせ
「y」を入力すると上書き
「n」を入力すると何もしない
$ ls -l file*
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 21:33 filem1
$ mv -i file01 filem1
mv: 'filem1' を上書きしてもよろしいですか(yes/no)? y
$ ls -l file*
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 filem1
移動したので、元のファイルは消滅し、移動後のファイルの最終更新日時が元のファイルのものになっている
同一名ファイル存在時にバックアップファイルを作成して、問い合わせなしに移動する
$ ls -l file* 
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 21:33 filem1
$ mv -fbS _ file01 filem1
ファイル「filem1」のバックアップファイルをサフィックス「_」で作成して、問い合わせなしで移動
$
$ ls -l file*
-rwxrwxr-x 1 cmd cmd 39 4月11 15:13 filem1
-rwxrwxr-x 1 cmd cmd 25 4月11 21:32 filem1_
バックアップファイル
ファイル「filem1」は上書きされていて、元の「file01」である
$
複数のファイルをまとめて移動する
$ ls -l 
合計14
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 21:53 file03
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
lrwxrwxrwx 1 cmd cmd 12 4月11 17:26 file11a -> dir01/file11
$ mkdir dir02
$ mv -v file* dir02
名前が「file」から始まるファイルを、ディレクトリ「dir02」に移動
「-v」は処理内容を表示するオプション
'file01' -> 'dir02/file01'
'file02' -> 'dir02/file02'
'file03' -> 'dir02/file03'
'file11' -> 'dir02/file11'
'file11a' -> 'dir02/file11a'
$ ls -l dir02
合計12
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 21:53 file03
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
lrwxrwxrwx 1 cmd cmd 12 4月11 17:26 file11a -> dir01/file11
$
ファイルが新しくなる場合だけ移動する
$ ls -l file01* 
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 39 4月11 21:53 file01a
$ mv -u file01 file01a
$ ls -l file01*
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 39 4月11 21:53 file01a
移動すると「file01a」が古くなるので、移動しない
$ mv file01a file01
-rw-rw-r-- 1 cmd cmd 39 4月11 21:53 file01
移動すると「file01」が新しくなるので、移動
$
HINT!

 lsコマンド・mkdirコマンド

本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.


開発者必携!VBAスキルを証明する資格「VBAエキスパート」