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
相关推荐
HLC++5 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室6 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy9 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕9 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫10 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生11 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1112 小时前
linux基础IO
linux·运维·服务器
BelongPanda14 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯14 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983414 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器