mv · 移动/重命名文件

上游:cp(cp 留副本,mv 搬走原件)· ls(移动前确认文件存在) 下游:tar(mv 单文件,tar 打包整个目录)· find(找到文件后再 mv)


一句话是什么

mv 移动文件到新位置,或者给文件改名—— 两个功能用同一个命令。


为什么需要它

下载的 Bedrock Server 压缩包解压后,把文件夹整理到正确位置:

mv ~/Downloads/bedrock-server/ ~/mc-server/
# 搬到正确的地方了

或者给脚本改个更清楚的名字:

mv start.sh start-mc.sh
# 改名了,原来的 start.sh 消失,只有 start-mc.sh

核心用法

公式

mv 源文件 目标位置
mv 旧名字 新名字

常用命令

命令说明
mv a.txt ~/backup/把 a.txt 移入 backup 目录
mv a.txt b.txt把 a.txt 改名为 b.txt
mv *.log ~/logs/把所有 .log 文件移入 logs/
mv -i 源 目标目标已存在时提示确认
mv -n 源 目标目标已存在时不覆盖(skip)

cp vs mv 核心区别

# cp:复制,原文件保留
cp a.txt b.txt
ls a.txt  b.txt    # 两个都在
 
# mv:搬家,原文件消失
mv a.txt b.txt
ls b.txt           # 只剩改名后的文件

Linux 笑话

Aaron 想把备份文件归档到正确目录,输入:

mv mc-worlds-20260420.tar.gz archive

然后发现 archive 目录不存在, Linux 就把文件改名成了 archive,没有移动!

ls
# archive   ← 这其实是那个 tar.gz 文件,被改名了

mv 到不存在的目录 = 改名,不是移动。 移动之前先 mkdir 建好目标目录,或者用 ls 确认目标存在。


例题精讲

📗 初探 Starter — 整理下载的服务器文件

# 解压后在 Downloads 里
ls ~/Downloads/
# bedrock-server-1.21/
 
# 移动到正确位置
mv ~/Downloads/bedrock-server-1.21/ ~/mc-server/
 
# 确认移过去了
ls ~/mc-server/
# bedrock_server  server.properties  worlds/ ...

📘 应用 User — 批量整理日志

# 把散落的日志文件都移入 logs 目录
mkdir -p ~/logs
mv ~/mc-server/*.log ~/logs/
 
# 确认
ls ~/mc-server/*.log 2>/dev/null || echo "没有 .log 文件了"
ls ~/logs/

📙 管理 Admin — 滚动备份归档

# 旧备份超过 30 天,移入归档目录(不删,只归档)
mkdir -p ~/mc-backups/archive/
 
# 用 find 找到旧文件,再 mv
find ~/mc-backups -name "*.tar.gz" -mtime +30 \
  -exec mv {} ~/mc-backups/archive/ \;
 
# 确认归档
ls ~/mc-backups/archive/ | head -5

官方文档参考

man mv      # 完整手册
mv --help   # 快速选项

mv 源 目标 移动;目标是目录则移入,目标不存在则改名;-i 防止意外覆盖;移动前先确认目标目录存在。


节点链接

上游

  • cp ← cp 留副本,mv 不留
  • ls ← 移动前后都要 ls 确认

下游

  • tar ← mv 处理单文件,tar 处理目录打包
  • find ← find 定位文件 + mv 批量移动

实战

  • shell-script ← 脚本里用 mv 整理日志、归档旧文件

节点版本:v1.0 · 2026-04-20 Tier 1 基础节点——Linux 的搬家公司