"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移动文件在同一文件系统中是重命名操作(速度快),跨文件系统时则是复制后删除源文件(速度取决于文件大小)。