記事ディレクトリ
1. コマンドの概要
mv (move) は、ファイルやディレクトリを移動または名前変更するために使用されます。
ファイル移動時に対象ファイルが既に存在する場合、対象ファイルの内容は上書きされます。
mv コマンドを使用すると、ソース ファイルを宛先ファイルに移動したり、ファイルのグループを宛先ディレクトリに移動したりできます。ソース ファイルをターゲット ファイルに移動すると、次の 2 つの異なる結果が得られます。
(1) 対象ファイルがディレクトリの場合、元のファイルはそのディレクトリに移動され、ファイル名は変更されません。ターゲット ファイルがディレクトリの場合、複数のソース ファイルまたはディレクトリ パラメータが存在する可能性があり、すべてのソース ファイルがターゲット ディレクトリに移動されます。このディレクトリに移動されたすべてのファイルは、以前のファイル名を保持します。
(2) 対象ファイルがディレクトリでない場合は、元のファイル名(1 つだけ)を対象ファイル名に変更し、既存の同名のファイルを上書きします。元のファイルとターゲット ファイルが同じディレクトリにある場合、mv の機能はファイル名を変更することです。
知らせ:
(1) mv と cp の結果は異なります mv はファイルを「移動」するようなもので、ファイル数は増えません。cp がファイルをコピーしている間、ファイルの数は増加します。
(2) マニュアルには明記されていませんが、ターゲットディレクトリが空でない場合、mv を使用してディレクトリを移動すると失敗します。安全であれば、代わりに cp コマンドを使用できます。
cp -rf yourdir dstdir && rm -r yourdir
2. コマンドフォーマット
mv [options] source dest
mv [options] source... directory
オプションの説明
--backup=[=CONTROL]
若需覆盖文件,则覆盖前先行备份
-b
当文件存在时,覆盖前,为其创建一个备份。功能类似于--backup,但是不需要接收参数
-f, --force
若目标文件或目录已存在,则直接覆盖不进行提示。为缺省行为。
-i, --interactive
交互式操作,若目标文件或目录已存在,则询问用户是否覆盖。输入y表示同意;输入n表示不同意
-n, --no-clobber
不覆盖现有的同名文件或目录;如果同时指定多个以下选项,-i, -f, -n,则只有最后一个生效
--strip-trailing-slashes
删除参数 SOURCE 中所有目录末端的斜杠
-S, --suffix=SUFFIX
为备份文件指定后缀,而不使用默认的后缀
-t, --target-directory=DIRECTORY
指定源文件要移动到的目标目录
-T, --no-target-directory
将 DEST 视为普通文件
-u, --update
当源文件比目标文件新或者目标文件不存在时,才执行移动操作
-v, --verbose
冗余模式执行 mv,解释 mv 命令的执行过程
一般的に使用されるパラメータ:
- -i: 指定されたディレクトリに同じ名前のファイルがすでに存在する場合、最初に古いファイルを上書きするかどうかを確認します。
- -f: mv 操作で既存のターゲット ファイルを上書きする場合は、何も指示しません。
mvパラメータの設定と実行結果
コマンド形式 | 演算結果 |
---|---|
mv ファイル名 ファイル名 | ソースファイル名をターゲットファイル名に変更します |
mv ファイル名 ディレクトリ名 | ファイルをターゲットディレクトリに移動する |
mv ディレクトリ名 ディレクトリ名 | ターゲット ディレクトリが既に存在する場合は、ソース ディレクトリをターゲット ディレクトリに移動し、ターゲット ディレクトリが存在しない場合は、名前を変更します。 |
mv ディレクトリ名 ファイル名 | エラー |
3. 一般的な例
(1) ファイル名 aaa を bbb に変更します。
mv aaa bbb
(2) 移動+名前変更
mv /home/test/a.txt /home/demo/c.txt
(3) /home/test ディレクトリ内のすべてのファイルをカレントディレクトリ (. で示す) に移動します。
mv /home/test/* .
(4) info ディレクトリを log ディレクトリに配置します。logs ディレクトリが存在しない場合、このコマンドは info の名前を log に変更することに注意してください。
mv info/ logs
(5) 対話型操作では、対象のファイルまたはディレクトリが既に存在する場合、上書きするかどうかをユーザーに確認します。
mv -i test1 test2