Linux mv
命令详细教程
mv
(move 的缩写)是 Linux 系统中用于移动或重命名文件/目录的核心命令。它功能灵活,既可以将文件从一个位置转移到另一个位置,也可以直接修改文件或目录的名称,且操作效率高(移动同一分区内的文件时,仅修改文件名,不复制数据)。- 资料已经分类整理好:
https://pan.quark.cn/s/26d73f7dd8a7
一、基本语法
mv [选项] 源文件/目录 目标文件/目录
- 核心作用:
- 若源和目标在同一目录:执行重命名操作。
- 若源和目标在不同目录:执行移动操作。
- 多源处理:可同时移动多个文件/目录,此时目标必须是目录(所有源会被移动到该目录下)。
二、常用选项
选项 | 功能描述 |
---|---|
-i | 交互式操作,若目标文件已存在,会提示“是否覆盖”(防止误操作,推荐常用) |
-f | 强制操作,若目标文件已存在,直接覆盖且不提示(慎用,可能覆盖重要文件) |
-v | 显示操作过程(verbose,详细输出移动/重命名的步骤) |
-n | 不覆盖已存在的文件(no-clobber,若目标存在则跳过,不提示) |
-u | 仅当源文件比目标文件新,或目标不存在时才执行移动/重命名 |
三、实际操作示例
1. 重命名文件/目录
对同一目录下的文件或目录进行重命名:
# 重命名文件
mv old_file.txt new_file.txt
# 重命名目录
mv old_dir/ new_dir/
- 若目标名称已存在(且为文件),不加选项时会直接覆盖(默认行为因系统配置而异,部分系统默认带
-i
提示)。
2. 移动文件到指定目录
将文件 doc.txt
移动到 documents/
目录下(documents
必须存在,否则会重命名为文件):
mv doc.txt documents/
- 移动后,源文件在原位置消失,出现在目标目录中。
3. 移动多个文件到目录
将 file1.txt
、file2.jpg
、notes/
目录同时移动到 backup/
目录:
mv file1.txt file2.jpg notes/ backup/
- 确保
backup/
是已存在的目录,否则会报错(多源目标必须为目录)。
4. 交互式避免覆盖
当目标文件已存在时,通过 -i
选项确认是否覆盖(避免误删重要文件):
mv -i report.txt docs/
# 若 docs/report.txt 已存在,会提示:mv: 是否覆盖 'docs/report.txt'?
# 输入 y 覆盖,n 取消
- 大多数 Linux 系统默认将
mv
别名设置为mv -i
,直接输入mv
也会触发提示。
5. 强制覆盖文件
若确认需要覆盖目标文件且不想被提示,使用 -f
选项(谨慎使用):
mv -f old_data.csv data/
# 若 data/old_data.csv 存在,直接覆盖,无任何提示
6. 不覆盖已有文件
通过 -n
选项确保不会覆盖目标中已存在的文件(适合批量移动时保留现有文件):
mv -n *.txt archive/
# 若 archive/ 中已有同名 .txt 文件,这些文件会被跳过,仅移动不存在的文件
7. 仅移动更新的文件
使用 -u
选项,只移动比目标文件更新(修改时间更新)的源文件,或目标中不存在的文件:
mv -u ~/Downloads/*.pdf ./docs/
# 仅当 Downloads 中的 pdf 比 docs 中的新,或 docs 中没有该 pdf 时,才移动
8. 显示移动过程
通过 -v
选项查看详细操作步骤(适合确认是否移动了预期的文件):
mv -v fileA.txt fileB.jpg folder/
# 输出示例:
# 'fileA.txt' -> 'folder/fileA.txt'
# 'fileB.jpg' -> 'folder/fileB.jpg'
四、特殊场景说明
-
跨分区移动文件:
若源和目标在不同磁盘分区,mv
会先复制文件内容到目标位置,再删除源文件(与cp
+rm
效果类似,但由命令自动完成)。 -
移动目录到另一个目录:
例如将dir1
移动到dir2
中(dir2
必须存在):mv dir1/ dir2/ # 结果:dir2/ 下会新增 dir1/ 及其所有内容
-
避免误操作的技巧:
- 移动前用
ls
确认源文件/目录是否正确。 - 对重要文件操作时,优先使用
-i
选项。 - 批量移动时,可先用
mv -vn
预览效果(-n
确保不实际操作,-v
显示预期结果)。
- 移动前用
五、注意事项
- 权限问题:移动文件到受限目录(如
/root
)时,需用sudo
提升权限,否则会提示“权限不够”。 - 软链接影响:移动软链接文件时,仅修改链接本身的位置,不影响其指向的源文件;若移动软链接的源文件,软链接会失效(需重新创建)。
- 目录非空时的覆盖:若目标是目录且非空,移动源目录到目标时,源目录会被放入目标中,而非覆盖目标内容(例如
mv a/ b/
会生成b/a/
)。
mv
命令是 Linux 日常操作中高频使用的工具,掌握其选项和场景能大幅提升文件管理效率,同时需注意避免因误操作导致的数据丢失。