200字
mv
2025-10-10
2025-10-10

"Move" 的缩写,是一个用于移动或重命名文件/目录的命令行工具。

该命令可以将文件或目录从源路径转移到目标路径,也可用于对文件/目录进行重命名,是文件系统组织和管理的核心命令之一,操作具有原子性(要么完全成功,要么完全失败)。

 mv [选项] <源文件/目录1> <源文件/目录2> ... <目标路径>

常用选项

  • -i:"interactive",交互式操作,若目标文件/目录已存在,会提示是否覆盖,例如 mv -i file.txt /tmp//tmp 中已有 file.txt 时,会询问确认。

  • -f:"force",强制移动/重命名,若目标已存在则直接覆盖,不提示确认,例如 mv -f new.txt old.txt 直接用 new.txt 覆盖 old.txt

  • -v:"verbose",显示操作过程的详细信息,例如 mv -v docs /archive/ 会输出 'docs' -> '/archive/docs',便于跟踪操作。

  • -n:"no clobber",不覆盖已存在的文件/目录,若目标存在则跳过操作,例如 mv -n *.log /backup/ 不会覆盖 backup 中已有的日志文件。

  • -u:"update",仅当源文件比目标文件新,或目标不存在时才执行移动,例如 mv -u *.html /var/www/ 只更新 newer 的网页文件。

参考示例

  • 示例1:重命名单个文件 执行 mv report_v1.txt report_final.txt,将当前目录的 report_v1.txt 重命名为 report_final.txt,适合修改文件名称以体现版本或状态。

  • 示例2:移动文件到指定目录 执行 mv /tmp/temp.log /var/log/app/,将临时目录的 temp.log 移动到应用日志目录,常用于整理分散的文件到统一位置。

  • 示例3:批量移动同类文件 执行 mv *.csv data/,将当前目录下所有 .csv 格式的文件移动到 data 子目录,适合分类整理数据文件。

  • 示例4:交互式移动避免误覆盖 执行 mv -i config.ini /etc/app/,当 /etc/app/ 中已有 config.ini 时,会提示 是否覆盖 '/etc/app/config.ini'?,需手动确认后才执行,保护重要配置文件。

  • 示例5:强制覆盖并显示过程 执行 mv -fv /backup/nginx.conf /etc/nginx/,强制用备份的配置文件覆盖Nginx的当前配置,并显示操作信息,适合配置文件恢复场景。

  • 示例6:移动目录并保持结构 执行 mv project/docs /archive/,将 project 目录下的 docs 子目录移动到 archive 目录,原目录结构保持不变,用于归档不再需要的子项目。

  • 示例7:仅更新较新的文件 执行 mv -u ~/downloads/*.pdf docs/,只将下载目录中比 docs 目录中同名文件更新的PDF文件移动过去,适合增量同步文件。

  • 示例8:安全重命名目录 执行 mv old_project/ new_project/,将 old_project 目录重命名为 new_project,若 new_project 已存在且非空,会提示是否覆盖(默认行为),避免意外覆盖整个目录。

注意mv 移动文件在同一文件系统中是重命名操作(速度快),跨文件系统时则是复制后删除源文件(速度取决于文件大小)。


评论