mvはファイルやディレクトリを移動するコマンドだ。mvを使えないとLinuxは操作できない。
このページではmvコマンドについて詳しくまとめた。知らなかった便利なオプションもあるはずだ。
ぜひ参考にしてみてほしい。
mvコマンドの基本
mvコマンドの基本動作
mvコマンドは「move」の略で、移動のコマンドだ。ファイルやディレクトリを移動する。
基本的な書式は次のようになる。
$ mv 移動元 移動先
例えば、mvディレクトリにfilAを移動するとすると次のようになる。
$ mv fileA mv/fileA
これで移動が完了する。
ディレクトリの操作もまったく同じだ。ファイルと同じように移動ができる。
$ mv 元のディレクトリ 移動先
これだけだ。次のように、mvディレクトリに、DirAディレクトリを移動してみる。
このように、移動ができている。
mvで同じ名前のまま移動する
ファイルを同じ名前のまま移動する場合、移動先はディレクトリ名だけ入力すればいい。
先ほどと同じように、mvディレクトリにfileAを移動するとする。名前を変える必要がなければ、次のコマンドで移動ができる。
$ mv fileA mv
ファイル名を入力しなくて済むので、処理が早くできる。
mvコマンドによる名前の変更
mvディレクトリという名前が、コマンドと同じでわかりにくいと思ったとしよう。mvコマンドは名前を変更するのにも使う。
$ mv 元の名前 変更後の名前
という書式だ。要するに、移動とまったく変わらない。mvディレクトリの名前をmvDirディレクトリに変更する。
$ mv mv mvDir
このように名前が変更できた。
これは意外と知らない人もいるかもしれないが、複数のファイルを一度に移動することもできる。
$ mv 移動ファイル1 移動ファイル2 ディレクトリ
例えば次の通りだ。
$ mv fileA fileB DirA
ここまでがmvコマンドで、必ず知らないといけない基本的な使い方になる。
mvコマンドの便利なオプションたち
mvコマンドのオプション一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
-b, --backup
移動後に上書きや削除されるファイルのバックアップを取る
-f, --force
確認をせずに上書きをする
-i, --interactive
上書きの場合は確認をする
-n, --no-clobber
移動先に同じ名前のファイルやディレクトリがあるときは移動をしない
-S, --suffix=SUFFIX
バックアップの形式を決める
-t, --target-directory=DIRECTORY
ターゲットとなるディレクトリを指定する。
-u, --update
移動元の方が新しい場合のみ新しい上書き
-v, --verbose
移動の詳細表示
それぞれ詳細を紹介していこう。
-bオプション(--backup):バックアップを取る
mvコマンドは移動後に自然と上書きの挙動を取る。-bオプションをつけると、上書きになるファイルのバックアップを取ってくれる。
大事なファイルの移動中など、誤って消してしまわないように-bオプション(--backupオプション)をつけておくと安心だ。
$ mv -b fileA fileB
最後に「~」がついたものがバックアップファイルだ。バックアップファイルの名前は調整ができる。--suffixオプションを使う。
--suffixオプションでは色々な設定が可能だが、バックアップ日の表示が一番使いやすい。こちらを紹介しよう。
次のコマンドでバックアップファイルの後ろに日付を入力できる。
$ mv -b --suffix=_$(date +%Y%m%d) 移動元 移動先
-fオプション(--force):上書き時に確認しない
-fオプションをつけると上書き時に確認をしない。強制的に上書きをする形だ。
$ mv -f fileA fileB
mvコマンドのデフォルトでこの状態になっているディストリビューションも多いが、念のため確認しておこう。
-iオプション(--interactive):上書き時に確認をする
-fオプションと反対の挙動になるのが-iオプションだ。上書きをする際に確認をするようになる。
$ mv -i fileA fileB
このように上書き時に「よろしいですか(yes/no)?」と聞かれるようになる。yesもしくはnoで回答すると、処理が実行される。
-nオプション(--no-clobber):上書きはしない
移動先に同じ名前のファイルやディレクトリがあるとき、-nオプションをつけてmvコマンドを実行すると、移動が実行されない。上書きをしないようにするのが-nオプションの役割だ。
$ mv -n fileA fileB
上記例だと、本来fileAがなくなり、fileBのみになるはずだ。しかし、実行されていないのがわかる。
Question -i, -f, -nを同時に入力したらどうなるか?
-iと-f、-nを同時に入力すると、一番最後のオプションが反映される。-nfiオプションをつけると、-iオプションだけが使われる。
-vオプション:移動の詳細情報を表示
-vオプションをつけると、移動元と移動先を矢印で繋いで明示してくれる。一括でファイルを移動するときなど確認用につけるといいだろう。
$ mv -v fileA fileB DirB DirA
-tオプション:ターゲットとなるディレクトリを指定
あまり使うことはないが、移動先のターゲットとなるディレクトリを明示することもできる。下記の例だと-tオプション無しだとDirBディレクトリに入るが、-tオプションでDirAファイルを移動先としている。
$ mv -t DirA fileA DirB
-uオプション(--update):新しい場合のみ上書き
-uオプションをつけることにより、移動元の方が新しい場合のみ上書きができるように設定できる。
$ mv -u fileB fileA
とすると、通常fileAは消えるはずだが、fileAの方が新しいため残る。
mvコマンドと類似のコマンド群
最後にmvコマンドと似ているコマンドも紹介しておく。
copyコマンドだ。バックアップ等似ているオプションも多い。
rmコマンド
removeで削除のコマンドになる。cp、mv、rm、rmdirなどのコマンドは考えずとも指が動くようにしておきたい。
まとめ
mvコマンドは日常的に使うLinuxコマンドだ。オプションを使わずに使うことが多いが、知っておいて損はない。
この機会にぜひmvコマンドの詳細を確認してほしい。