mv
是 Linux/Unix 系统中用于 移动或重命名文件/目录 的命令。它的基本功能是将文件从一个位置移动到另一个位置,或直接修改文件/目录的名称。
Deepseek 回答:
基本语法
mv [选项] 源文件 目标文件
mv [选项] 源文件1 源文件2 ... 目标目录
常见用途
-
重命名文件/目录
如果目标路径与原路径在同一个目录下,且文件名不同,则视为重命名。mv old_file.txt new_file.txt # 将文件 old_file.txt 重命名为 new_file.txt mv old_dir new_dir # 将目录 old_dir 重命名为 new_dir
-
移动文件/目录到指定路径
如果目标路径是另一个目录,文件会被移动到该目录下,保留原名。mv file.txt /path/to/destination/ # 将文件移动到目标目录 mv dir1 /path/to/destination/ # 将目录移动到目标目录
-
移动多个文件到目录
可以同时移动多个文件到目标目录。mv file1.txt file2.txt file3.txt /path/to/destination/
常用选项
选项 | 说明 |
---|---|
-i | 交互模式:覆盖前询问用户确认。 |
-n | 不覆盖:如果目标文件已存在,则跳过。 |
-v | 显示详细信息:输出移动/重命名的过程。 |
-f | 强制操作:直接覆盖目标文件,不提示。 |
-u | 更新:仅在源文件比目标文件新时移动。 |
示例场景
-
重命名文件
mv report.doc report_final.doc
-
移动文件到目录
mv image.jpg ~/Pictures/ # 将 image.jpg 移动到用户图片目录
-
移动多个文件并显示详情
mv -v *.txt documents/ # 移动所有 .txt 文件到 documents 目录,并显示过程
-
避免覆盖已有文件
mv -i important.txt backup/ # 如果 backup/important.txt 存在,询问是否覆盖
-
强制覆盖(慎用)
mv -f data.log /var/log/ # 强制覆盖目标文件(无提示)
注意事项
-
覆盖风险
mv
默认会直接覆盖目标路径的同名文件,且不会提示。重要文件操作前建议备份,或使用-i
选项交互确认。 -
跨文件系统移动
如果源文件和目标目录位于不同文件系统(如从硬盘移动到U盘),mv
实际上会先复制文件再删除原文件,相当于cp + rm
。 -
目录移动规则
- 如果目标目录不存在,
mv
会将源目录重命名为目标名称。 - 如果目标目录已存在,
mv
会将源目录移动到目标目录内。
- 如果目标目录不存在,
与 cp
命令的区别
mv
:移动文件(原位置文件消失)。cp
:复制文件(原位置文件保留)。
个人实战演习:
案例1:同一目录下,改名字
- 创建文档:vim deepMv
- 查看文档:ls。显示为 deepMv
- 修改文档名称:mv deepMv newDeepMv
- 查看修改后文档: ls。已显示为 newDeepMv
案例2:不同目录,移动文件
- 查看当前目录下以mv开头的文件: ls | grep mv 。包括mv-target和mv-test
- 移动文件newDeepMv 从mv-test 到 mv-target : mv mv-test/newDeepMv mv-target
案例3:将多个文件移动到指定目录
- 在mv-target文件中有两个文件: m1 newDeepMv
- 移动这两个文件从 mv-target 到 mv-test: mv m1 newDeepMv …/mv-test
- 因为 mv-target 和 /mv-test 是在同一个文件夹中。是同级
- 我们此时是在mv-target 中。所以是…/mv-test。
案例4:子目录里的文件移动到另一个子目录里
- 因为 mv-target 和 /mv-test 是在同一个文件夹中。是同级
- 移动: mv mv-test/* mv-target
- 查看移动结果