Linux使用经验——mv命令

mv 是 Linux/Unix 系统中核心的文件/目录操作命令,全称 move ,核心功能是移动重命名文件/目录(本质都是修改文件系统的目录项),无需复制文件数据(除非跨文件系统),效率极高。

一、基本语法

bash 复制代码
mv [选项] 源文件/目录 目标文件/目录

二、核心用法

1. 重命名文件/目录(同一目录下)

如果目标位置和源位置是同一目录 ,且目标名称不存在,则 mv 表现为「重命名」。

bash 复制代码
# 重命名文件:将 file.txt 改为 newfile.txt
mv file.txt newfile.txt

# 重命名目录:将 dir1 改为 dir2
mv dir1 dir2
2. 移动文件/目录(不同目录)

如果目标是已存在的目录 ,则 mv 会将源文件/目录移动到该目录下(保留原名称)。

bash 复制代码
# 移动单个文件到 /tmp 目录
mv file.txt /tmp

# 移动多个文件到 ~/docs 目录
mv file1.txt file2.jpg ~/docs

# 移动目录 dir1 到 /opt 目录
mv dir1 /opt
3. 移动并同时重命名

将文件/目录移动到目标目录的同时,修改名称:

bash 复制代码
# 将 file.txt 移动到 /tmp 并改名为 test.txt
mv file.txt /tmp/test.txt

# 将 dir1 移动到 /opt 并改名为 newdir
mv dir1 /opt/newdir

三、常用选项

选项 作用 示例
-i(interactive) 交互式操作:目标已存在时,提示是否覆盖 mv -i file.txt /tmp
-f(force) 强制覆盖:目标已存在时,直接覆盖(无提示) mv -f file.txt /tmp
-n(no-clobber) 不覆盖:目标已存在时,跳过(优先于 -i/-f mv -n file.txt /tmp
-u(update) 仅当源文件比目标新,或目标不存在时才移动/覆盖 mv -u new_file.txt /tmp
-v(verbose) 显示详细操作过程(便于排查) mv -v dir1 /opt
-b(backup) 覆盖前为目标文件创建备份(后缀 ~) mv -b file.txt /tmp

四、实用示例

1. 批量移动同类型文件
bash 复制代码
# 将当前目录下所有 .log 文件移动到 /var/log/myapp 目录
mv *.log /var/log/myapp
2. 避免误覆盖(优先用 -i-n
bash 复制代码
# 交互式移动,覆盖前确认(推荐日常使用)
mv -i important.txt /backup

# 绝对不覆盖,防止误删目标文件
mv -n important.txt /backup
3. 移动隐藏文件(以 . 开头的文件)
bash 复制代码
# 移动当前目录下所有隐藏文件到 ~/hidden 目录
mv .* ~/hidden
# 注意:. 和 .. 会被匹配,可过滤:mv .[!.]* ~/hidden
4. 跨文件系统移动

如果源和目标在不同文件系统(如从 /dev/sda1/dev/sdb1),mv 会先复制文件,再删除源文件(等同于 cp + rm),此时效率较低,可先用 rsync 再删源文件。

五、注意事项

  1. 权限要求 :执行 mv 需要源文件/目录的读/写权限 ,以及源目录、目标目录的执行权限(x)
  2. 覆盖风险 :默认情况下(无 -i/-n),目标文件存在会直接覆盖(无提示),生产环境建议加 -i
  3. 目录移动 :移动目录时无需加 -r(区别于 cp),mv 天然支持目录操作;
  4. 符号链接mv 移动符号链接时,仅修改链接本身,不会影响链接指向的文件。

六、常见问题排查

  • 报错 Permission denied:检查源/目标目录的权限,或用 sudo 提升权限;
  • 报错 No such file or directory:确认源路径/目标路径拼写正确,目标目录需存在(除非是重命名);
  • 移动大文件后空间未释放:可能跨文件系统移动,源文件未删除,需手动检查并删除。
相关推荐
清水白石0089 分钟前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
码农小韩33 分钟前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
Joren的学习记录37 分钟前
【Linux运维大神系列】Kubernetes详解3(kubeadm部署k8s1.23高可用集群)
linux·运维·kubernetes
代码游侠1 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
眠りたいです1 小时前
Docker核心技术和实现原理第二部分:docker镜像与网络原理
运维·网络·docker·容器
Tisfy1 小时前
网站访问耗时优化 - 从数十秒到几百毫秒的“零成本”优化过程
服务器·开发语言·性能优化·php·网站·建站
2501_933513041 小时前
Linux下载离线rpm和依赖包的方法
linux·运维·服务器
闲人编程1 小时前
消息通知系统实现:构建高可用、可扩展的企业级通知服务
java·服务器·网络·python·消息队列·异步处理·分发器
XiaoHu02071 小时前
Linux多线程(详细全解)
linux·运维·服务器·开发语言·c++·git
Xの哲學1 小时前
Linux Platform驱动深度剖析: 从设计思想到实战解析
linux·服务器·网络·算法·边缘计算