作用:用于移动文件或目录,或者重命名的命令。与cp命令不同,mv命令操作后源文件会消失
bash
mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录
| 场景 | 本质 | 速度 |
|---|---|---|
| 同一文件系统内移动 | 只修改文件名/路径指针 | 极快(瞬间完成) |
| 跨文件系统移动 | 先复制数据,再删除源文件 | 慢(取决于文件大小) |
| 重命名 | 同文件系统内的特殊移动 | 极快 |
| 选项 | 完整写法 | 说明 |
|---|---|---|
-i |
--interactive |
交互模式,覆盖前提示确认 |
-f |
--force |
强制覆盖,不提示 |
-n |
--no-clobber |
不覆盖已存在的文件 |
-u |
--update |
只有源文件比目标新时才移动 |
-v |
--verbose |
显示详细移动过程 |
-b |
--backup |
覆盖前自动备份目标文件 |
-t |
--target-directory |
指定目标目录(参数顺序调换) |
基础用法示例:
1.重命名文件或目录(最常用)
bash
[root@master /]# ls
bin boot data demo01 dev etc home lib lib64 media mnt opt parent proc Projects root run sbin srv sys Tests tmp usr var
[root@master /]# cd Tests
[root@master Tests]# ls
myfile1.txt SubTests test1.txt test2.txt test3.txt
[root@master Tests]# cat test1.txt test2.txt test3.txt
2026年4月25日01点18分
2026年4月25日01点18分
2026年4月25日01点18分
[root@master Tests]# cat test1.txt
2026年4月25日01点18分
[root@master Tests]# cat test2.txt
2026年4月25日01点18分
[root@master Tests]# cat test3.txt
2026年4月25日01点18分
[root@master Tests]# mv test1.txt file01.txt # 重命名文件
[root@master Tests]# ls
file01.txt myfile1.txt SubTests test2.txt test3.txt
[root@master Tests]# cat file01.txt
2026年4月25日01点18分
2.移动文件到指定目录
bash
[root@master Tests]# mv file01.txt ./SubTests # 移动单个文件到指定目录
[root@master Tests]# ls SubTests
file01.txt
[root@master Tests]# cat SubTests/file01.txt
2026年4月25日01点18分
[root@master Tests]# mv test2.txt test3.txt SubTests/ # 移动多个文件到指定目录
[root@master Tests]# ls SubTests
file01.txt test2.txt test3.txt
bash
[root@master Tests]# mv file01.txt ./Sub # 由于前面已经将file01.txt移动到./SubTests这个目录下了,所以当前目录下就没有这个文件了,因此会报错
mv: cannot stat 'file01.txt': No such file or directory
[root@master Tests]# ls # 从ls结果看出确实file01.txt消失了
myfile1.txt SubTests
[root@master Tests]# cd SubTests/
[root@master SubTests]# ls
file01.txt test2.txt test3.txt
[root@master SubTests]# mv file01.txt ../Sub
[root@master SubTests]# cd ..
[root@master Tests]# ls
myfile1.txt Sub SubTests
[root@master Tests]# ls -l Sub # 本来想创建一个Sub目录的,但是在mv命令中只能新建不存在的文件,不能新建目录
-rw-r--r--. 1 root root 27 Apr 25 01:18 Sub
[root@master Tests]# cat Sub
2026年4月25日01点18分
bash
[root@master Tests]# ls
myfile1.txt Sub SubTests
[root@master Tests]# ls SubTests
test2.txt test3.txt
[root@master Tests]# mv SubTest/test2.txt ./Sub/ # 确信了如果要移动到指定的目录下,那么这个目录就要先存在
mv: failed to access './Sub/': Not a directory
3.移动目录
bash
[root@master Tests]# ls
myfile1.txt Sub SubTests
[root@master Tests]# mkdir S
[root@master Tests]# ls
myfile1.txt S Sub SubTests
[root@master Tests]# ls S
[root@master Tests]# mv SubTests S # 移动目录不需要-r参数,mv命令自带递归移动效果
[root@master Tests]# ls
myfile1.txt S Sub
[root@master Tests]# ls S
SubTests
[root@master Tests]# ls S/SubTests/
test2.txt test3.txt