Linuxコマンド mv(ファイル・ディレクトリを移動/名前変更)

ファイルやディレクトリの移動及び名前の変更をするmvコマンドの解説。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

使用方法

書式

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

オプション

-f,
–force
同名のファイルがあれば上書き
-i,
–interactive
同名のファイルがある場合は確認メッセージが表示
-t ディレクトリ名
–target-directory=ディレクトリ名
移動元にあるすべてのファイルを指定したディレクトリに移動する
-n,
–no-clobber
既存のファイルを上書きしない
-u,
–update
移動元ファイルが移動先ファイルより新しい、または移動先が存在しない場合のみ移動する
-v,
–varbose
実行中の動作を表示する。
-b
–backup=フラグ
移動先のディレクトリに同名のファイルが存在する場合は、
ファイル名の末尾にチルダ(~)が付加されバックアップされます。
※フラグは、指定可能なバックアップ方法の表を参照
-S 文字列
–suffix=文字列
移動先に同じファイル名がある場合、指定した文字列をバックアップファイル名に付加する。
「.」などは勝手に付加されない
オプション一覧
フラグ説明
none/offバックアップを作成しない
numbered/t常に数字の拡張子を持つバックアップを作成する
existing/nil数字つきのバックアップファイルがある場合は加算、ない場合は「~」だけ付加する
simple/never「~」をつけるだけのバックアップを行う
指定可能なバックアップ方法

ディレクトリ・ファイル名を変更する

既存のファイル、ディレクトリの名前を変更。

サンプル

ディレクトリ名dir1をdir2に変更する。

$ mv dir1 dir2
mvサンプルの実行結果

サンプル

ファイル名sample1.txtをsample2.txtに変更する。

$ mv sample1.txt sample2.txt
mvサンプルの実行結果

ディレクトリ・ファイルを移動させる

既存のファイル、ディレクトリを別のディレクトリへ移動する。ディレクトリの指定は絶対パスでも相対パスでも有効。

サンプル

ファイル名sample1.txtをディレクトリのdirに移動させる。

$ mv sample1.txt dir1
mvサンプルの実行結果

移動先に同名のファイルが存在する場合

一般コマンドは、一般ユーザー権限でオプションの指定なしで実行した場合、移動先に同名ファイル名が存在する場合、オーバーライド(上書き)するかメッセージが表示されます。ただし、CentOSにおいては、管理者権限で実行した場合オーバーライドメッセージが表示されます。

「y」もしくは、「Y」Enterすることで処理を進めます。「N」または「n」Enterキーで処理を中断します。

既存ファイルをバックアップして移動する

移動先に同名のファイルが存在する場合は、バックアップファイルを作成して移動する方法。バックアップファイルにはファイル名の末尾にチルダ(~)が付加される。

サンプル

ファイル名sample1.txtをディレクトリのdirに移動させる。

$ mv -b sample1.txt dir1
mvサンプルの実行結果

タイムスタンプが新しい場合は移動する

ファイルの移動を行う場合、移動先に同名のファイルがすでに存在する場合は、タイムスタンプが新しいものであれば上書きする方法

$ mv -u sample.txt /dir1
mvサンプルの実行結果

移動先のsample1.txtファイルが移動元より新しいため、コピーされない。

複数のディレクトリ・ファイルを移動させる。

dir1とdir2をdir3へ移動させる。

サンプル

$ mv dir1 dir2 dir3
mvサンプルの実行結果

バックアップファイル名に数字をつける

sample1.txtをdirディレクトリ配下に移動する。移動先にsample1.txtが存在するので、数字付きのバックアップファイルを作成する。

サンプル

$ mv --backup=t sample1.txt dir/
mvサンプルの実行結果

作業ディレクトリのすべてのファイル・ディレクトリを移動させる。

ワイルドカードを使用することで、一括で移動させることができるが、シャルで展開されて引数文字数上限にひっかかりエラーになることがあるので、lsをパイプでつないでxargsに渡す方法が確実である。

サンプル

$ mv * ../dir2/ #ARG_MAXに引っかかる可能性がある。
$ ls | xargs mv -t ../dir2
mvサンプルの実行結果