Linux 【08-mv命令超详细教程】

Linux mv 命令超详细教程

mv = move ,核心两大功能:移动文件/目录重命名文件/目录,是 Linux 最常用命令之一。

一、基本语法

bash 复制代码
mv [选项] 源文件/源目录 目标文件/目标目录
  • :要移动/改名的文件/文件夹
  • 目标
    1. 目标不存在 → 重命名
    2. 目标是目录 → 把源移入该目录
    3. 目标是已存在文件 → 默认直接覆盖

二、常用选项(参数)

选项 作用
-f 强制覆盖,不提示(force)
-i 覆盖前交互式询问(默认很多系统已别名开启)
-n 不覆盖已存在文件(no clobber)
-v 显示详细执行过程(verbose)
-u 仅移动更新的文件(源比目标新/目标不存在才移动)

三、实战用法(分场景)

1. 重命名(最基础)

1.1 重命名单个文件
bash 复制代码
# 把 old.txt 改名为 new.txt
mv old.txt new.txt
1.2 重命名目录
bash 复制代码
# 把 dir1 改名为 dir2
mv dir1 dir2

2. 移动文件/目录

2.1 移动单个文件到目标目录
bash 复制代码
# 将 a.txt 移动到 /home/test 目录
mv a.txt /home/test/
2.2 移动整个目录(连同内部所有文件)

mv 移动目录无需加 -r (和 cp/rm 不同)

bash 复制代码
# 把 dirA 整个移入 dirB 中
mv dirA dirB/
2.3 移动多个文件/通配符批量移动
bash 复制代码
# 移动 a.txt b.log c.jpg 到 target 目录
mv a.txt b.log c.jpg target/

# 批量移动所有 .txt 文件
mv *.txt target/

3. 覆盖相关场景(重点)

3.1 覆盖前提示(-i)

防止误删,绝大多数 Linux 系统默认把 mv 别名成 mv -i

bash 复制代码
mv -i old.txt exist.txt
# 提示:mv: 是否覆盖 'exist.txt'? 输入 y 确认,n 取消
3.2 强制覆盖(-f,不弹窗)

脚本/批量操作常用

bash 复制代码
mv -f old.txt exist.txt
3.3 不覆盖已有文件(-n)

安全批量移动,跳过重名文件

bash 复制代码
mv -n *.log dir/
3.4 只移动更新的文件(-u)

源文件修改时间更新,才覆盖目标

bash 复制代码
mv -u a.txt dir/

4. 查看执行过程(-v 详细模式)

适合批量操作,看清每个文件去向

bash 复制代码
mv -v *.txt ./bak/

5. 特殊路径用法

5.1 移动到上级目录
bash 复制代码
# 把当前目录的 test.txt 移到上一级
mv test.txt ../
5.2 移动到当前用户家目录
bash 复制代码
mv file.txt ~/
5.3 绝对路径 / 相对路径混用
bash 复制代码
# 相对源 + 绝对目标
mv ./data.log /opt/service/log/

四、典型易错点 & 避坑

坑1:目标是文件夹 vs 文件 区别

  1. mv file dir
    • 如果 dir 是目录file 移入 dir
  2. mv file1 file2
    • 如果 file2 不存在:file1 改名为 file2
    • 如果 file2 已存在:直接覆盖 file2

坑2:移动目录不要加 -r

mv dir1 dir2/ ✅ 正确

mv -r dir1 dir2/ ❌ 多余参数,不报错但没必要

坑3、跨分区移动 = 复制+删除

  • 同分区:mv 只是修改文件指针(极快)
  • 不同分区:先复制全部内容,再删除原文件(速度慢)

坑4、隐藏文件(.开头)批量移动

bash 复制代码
# 移动当前所有隐藏文件到目标目录
mv .[^.]* target/

五、组合示例(常用组合命令)

  1. 批量移动+详细输出+不覆盖
bash 复制代码
mv -vn *.jpg ./images/
  1. 强制批量覆盖(脚本专用)
bash 复制代码
mv -f *.conf /etc/nginx/conf.d/
  1. 移动并改名一步完成
bash 复制代码
# 把 a.txt 移到 /tmp 并改名为 b.txt
mv a.txt /tmp/b.txt

六、补充:取消 mv 别名(临时关闭交互提示)

很多系统默认 alias mv='mv -i',不想每次弹窗可以:

bash 复制代码
# 临时执行一次不询问
\mv old.txt exist.txt
相关推荐
qq_163135754 小时前
Linux 【07-rm命令超详细教程】
linux
zh路西法4 小时前
【SSH 免密登录全流程】Windows Linux 通用方案
linux·windows·ssh
ScilogyHunter5 小时前
GCC完全指南
linux·gcc
CodeStats5 小时前
从 CPU 指令到 JVM 进程:彻底讲透 Java 执行 main 方法时,类加载、主线程、栈帧入栈的完整底层逻辑
java·linux·开发语言
努力努力再努力wz7 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Jurio.7 小时前
开源 Codex Sticky:在终端 Codex CLI 长对话中始终固定底部输入框
linux·rust·github·开源软件·codex·codex cli
无足鸟ICT7 小时前
【RHCA+】撤销和恢复撤销快捷键
linux
质造者8 小时前
LangChain + Ollama + Tavily 实现旅游问答系统
linux·人工智能·python·langchain·rag
starvapour8 小时前
Ubuntu部署gitlab频繁出现502的问题
linux·ubuntu·gitlab