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
相关推荐
GeW6 小时前
从内核到数据:Linux与工业数据库如何支撑高端制造
linux
小小的木头人7 小时前
Linux systemd Service 与 Timer 定时任务原理及实战
linux
熊明才8 小时前
WSL2 网络突然瘫痪(Network is unreachable / 没有 eth0)最短修复指南(2026年9月20日亲测可用)
linux·windows·wsl2
Tairitsu_H9 小时前
[Linux系统] 自动化构建make / Makefile | 进度条
linux·操作系统·makefile·make
行者全栈架构师9 小时前
大模型运维准确率不到 50%?我们用 DeepSeek V4 测了 5 大场景,结果出人意料
linux·人工智能·开源
zzzyyy53810 小时前
TCP 协议学习笔记:从报文格式到异常处理
linux·网络
傲世仙尊10 小时前
ELF与动态库进阶-链接真相与GOT表
linux
M78佐菲10 小时前
ARM学习笔记(五)
linux·arm开发·笔记·嵌入式硬件·学习
H_oRIZoN_11 小时前
Linux入门DAY45 IMX6ULL 裸机开发笔记:汇编点灯、C 语言点灯、GIC 中断梳理
linux·单片机·嵌入式硬件
临期冰淇淋12 小时前
Unisoc 展锐平台Camera摄像头分辨率适配
linux·c语言·驱动开发