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
相关推荐
m0_7436975930 分钟前
DNS的反向域名的相关问题
linux
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
思想觉悟1 小时前
SEAndroid实战
android·linux·c++
前进吧-程序员2 小时前
C++20 协程实战:手写 Task、单线程调度器与 awaiter 的三个钩子
linux
Android系统攻城狮2 小时前
Linux FFmpeg深度解析之avcodec_alloc_context3调用流程与实战(十四)
linux·运维·ffmpeg·车载音视频·音视频进阶·ffmpeg音视频进阶
自由彩虹2 小时前
靶场通关15--bossplayersctf
linux·服务器·网络·安全·web安全·网络安全
叼烟扛炮2 小时前
Linux 学习笔记(四十五):Web 安全基石——Cookie、Session 与 HTTPS 原理解析
linux·前端·网络·笔记·学习·tcp/ip·安全
Linux_cy3 小时前
nginx 502 排查手册:九种原因分类、定位命令与检查顺序
linux·运维·服务器·网络·数据库·nginx·ssh
椒颜皮皮虾྅3 小时前
模型部署不再卡在环境上:DeploySharp 四大推理引擎与 Windows/Linux 离线交付实战
linux·运维·开发语言·人工智能·windows·计算机视觉·cuda
垆边人似月.3 小时前
Ubuntu 配置 Samba 共享文件夹并映射到 Windows 完整指南
linux·windows·ubuntu