mv コマンド
目次
概要
mv - ディレクトリやファイルを移動・名前変更するコマンドライン
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
対象バージョン
- RHEL 10 : GNU mv 9.5
- Ubuntu 24.04 : GNU mv 9.4
説明
ファイルやディレクトリをディレクトリ配下に移動
ファイル(fileA.txt
) やディレクトリ(dirA
) を、指定したディレクトリ(dst-dir
) 配下に移動します。
$ mv fileA.txt dst-dir # fileA.txt を dst-dir ディレクトリ配下に移動 $ mv dirA dst-dit # dirA を dst-dir ディレクトリ配下に移動
ファイル名やディレクトリ名を変更
ファイル名やディレクトリ名を変更する際にも使用されます。
$ mv fileA.txt fileB.txt # fileA.txt を fileB.txt にファイル名変更 $ mv dirA dirB # dirA を dirB にディレクトリ名変更
ファイルの上書きを警告
-i
オプションをつけると移動先に同名のファイルが既に存在する場合に警告メッセージが表示されます。y
を入力すると上書きします。
$ mv -i fileA.txt fileB.txt mv: overwrite 'fileB.txt'? y
ファイルを入れ替え
--exchange
オプションを指定すると移動元ファイルと移動先ファイルを入れ替えます。GNU mv 9.5 からサポートされました。
$ mv --exchange fileA.txt fileB.txt # fileA.txt と fileB.txt を入れ替える
オプション
確認
- -i, --interactive
- 上書きの前に確認プロンプトを表示します。
- -f, --force
- 上書き前の確認プロンプトを表示しません。
バックアップ
- --backup[=CONTROL]
- バックアップ先にすでに同名のファイルが存在する場合、バックアップファイルを残します。詳細は cp コマンドの説明を参照してください。
- -S, --suffix=SUFFIX
- --backup オプションで作成するファイル末尾の ~ を別のサフィックスに変更します。詳細は cp コマンドの説明を参照してください。
- -b
- --backup=existing と同等です。
上書き
- --update[=UPDATE]
- コピー先に同名ファイルがすでに存在する場合の動作を指定します。
UPDATE
には下記のいずれかを指定します。- all : 常に上書きします
- none : 常に上書きしません。警告なしにスキップします
- older : コピー先が古い時だけ上書きします(デフォルト)
- -u
--update=older
と同等です。- -n, --no-clobber
- ファイルを上書きせずスキップします。
-i
,-f
,-n
を複数指定した場合は最後のものが優先されます。
入れ替え
- --exchange
- 移動元と移動先を入れ替えます。下記は、fileA.txt の内容を fileB.txt に、fileB.txt の内容を fileA.txt に入れ替えます。GNU mv 9.5 からサポートされました。
$ mv --exchange fileA.txt fileB.txt
セキュリティ
- -Z, --context
- 移動対象ファイルの SELinux セキュリティコンテキストをデフォルトに設定します。
情報表示
- -v, --verbose
- 実行状況を表示します。
- --debug
- デバッグ情報を出力します。
-v
オプションも付加されます。 - --help
- ヘルプメッセージを表示して終了します。
- --version
- バージョン情報を表示して終了します。
その他
- --no-copy
- 名前変更が失敗した場合にファイルのコピーを行いません。
- -t, --target-directory=DIRECTORY
- 移動先のディレクトリ名を引数ではなくオプションで指定します。
xargs
やfind -exec {} +
と組み合わせる際に便利です。$ touch fileA.txt fileB.txt fileC.txt $ mkdir backup $ find . -name "*.txt" | xargs mv --target-directory=backup # または $ find . -name "*.txt" -exec mv --target-directory=backup {} +
- --strip-trailing-slashes
- コマンドラインの
SOURCE
に / がある場合と無い場合で挙動が異なるため、コピー元に指定したディレクトリ名から / を取り除いて動作を統一的にするという説明ですが、Linux ではこのオプションの効能を確認することができませんでした。シンボリックリンクファイルをコピーする際には確かに / の有無により動作が変わるのですが、--strip-trailing-slashes をつけても動作は変わりませんでした。誰か効能をご存じの方がいれば...。 - -T, --no-target-directory
- 引数の
DEST
をディレクトリ名ではなく通常ファイルと見なします。下記の例ではfileB
に関しては-T
オプションをつけることでエラーが出ます。ファイル名を変更する際に誤って変更先のディレクトリ配下に移動してしまうのを防ぐ場合などに有効です。$ mkdir dst $ touch fileA fileB $ mv fileA dst $ mv -T fileB dst mv: cannot overwrite directory 'dst' with non-directory 'fileB'
関連項目
Copyright (C) 2025 杜甫々
初版:2025年7月27日 最終更新:2025年7月27日
https://www.tohoho-web.com/linux/cmd/mv.html