Linux文件移动命令mv
mv
命令,全称为 move
,可以用来移动或重命名文件和目录。
语法选项
命令语法如下
1 | mv [OPTION]... [-T] SOURCE DEST |
SOURCE
指的是源文件,也就是被移动或重命名的文件或目录,DEST
指的是目标文件,也就是被移动或重命名后生成的文件,DIRECTORY
表示的是被移动的目标目录。
...
表示的该选项或参数可以指定多次,比如 SOURCE...
表示可以指定多个源文件。
常用的命令选项,总结如下
-b
:如果目标文件存在,则在覆盖前先备份目标文件-f
:如果目标文件存在,则直接覆盖,没有任何提示-i
:如果目标文件存在,在覆盖前会进入交互模式,让用户提示选择是否覆盖-n
:如果目标文件存在,则不覆盖-u
:只有源文件比目标文件新时才会移动,或目标文件不存在时会移动-v
:显示移动或重命名的文件详情
上边只罗列了 mv
命令中常用的选项,基本可以满足大部分日常工作需求。如上述选项不能够满足需求,可以自己 man mv
查看手册详情。
用法示例
总结一些 mv
命令常见的使用方法
1. 移动文件
1 | $ mv a.txt foo |
将 a.txt
文件移动到 foo
目录中
2. 移动目录
1 | $ mv bar foo |
将 bar
目录移动到 foo
目录中,需要注意,如果在移动前 foo
目录不存在,就相当于把 bar
重命名为 bar
。
3. 重命名文件
1 | $ mv a.txt b.txt |
将 a.txt
文件重命名为 b.txt
4. 重命名目录
1 | $ mv foo bar |
将 foo
目录重命名为 bar
,需要注意,如果 bar
目录在重命名前就存在,则是将 foo
目录移动到 var
目录下,而不是重命名,可以与第 2 命令对比着来理解。
5. 移动多个文件
1 | $ mv a.txt b.txt c.txt foo |
将 a.txt
、b.txt
、c.txt
多个文件移动到 foo
目录中。同理,也可以将多个目录移动到另一个位置。
6. 重命名文件提示覆盖
如果重名名文件时,目标文件已存在,可以指定 -i
选项,提示用户选择是否覆盖,这样可以更加安全,防止意外覆盖重要文件
1 | # 命令执行前b.txt文件已存在 |
7. 覆盖前备份目标文件
当目标文件已存在,执行 mv
命令时指定 -b
选项,可以在覆盖前先备份目标文件
1 | $ mv -b a.txt b.txt |
可以看到额外生成了 b.txt~
备份文件