名称
mv - 移动(重命名)文件
简介
mv [选项]... 源文件 目标文件
mv [选项]... 源文件... 目标目录描述
mv 命令将文件或目录从一个位置移动到另一个位置。如果最后一个参数是一个已存在的目录,mv 会将所有指定的源文件或目录移动到该目录中(保持原名)。如果最后参数不是目录且只指定了两个文件,则会将源文件重命名为目标文件(可能覆盖已有文件)。
该命令主要用于:
重命名文件或目录。
将文件或目录移动到另一个目录下。
批量移动多个文件到目标目录。
选项
退出状态
0 – 所有移动操作成功。
>0 – 发生错误(例如源文件不存在、目标目录无法写入、权限不足等)。
常用示例
1. 重命名文件
mv oldname.txt newname.txt2. 移动文件到目录
mv file.txt /home/user/docs/3. 移动多个文件到目录
mv file1.txt file2.jpg /target/directory/4. 移动目录
mv mydir /new/location/5. 交互式移动(覆盖前询问)
mv -i source.txt dest.txt6. 强制覆盖(不询问)
mv -f source.txt dest.txt7. 仅在源文件更新时移动
mv -u source.txt dest.txt8. 不覆盖已存在的目标文件
mv -n source.txt dest.txt9. 移动时显示详细信息
mv -v *.log logs/10. 移动文件并为可能覆盖的目标创建备份
mv -b document.txt archive/这会在 archive/ 中若存在 document.txt 则将其重命名为 document.txt~,再将源文件移入。
11. 指定备份后缀
mv -b -S ".bak" file.txt backup/12. 使用 -t 指定目标目录(便于与 find 或 xargs 配合)
find . -name "*.tmp" -exec mv -t /tmp/ {} +将所有 .tmp 文件移动到 /tmp 目录。
13. 将文件重命名为目标文件,即使目标是一个目录也当作文件(不放入目录)
mv -T file.txt existing_dir如果 existing_dir 已存在且是目录,此命令将尝试把 file.txt 重命名为 existing_dir(而不是移入其中),如果 existing_dir 已存在且是普通文件,则会覆盖。
注意事项
移动操作在同一文件系统内是快速的(仅修改目录项),跨文件系统时实际会执行复制+删除,耗时且占用空间。
使用
-i或-n可以避免意外覆盖重要文件。在脚本中建议使用-n或-u以增加安全性。如果目标文件存在且无写权限,
mv会提示是否覆盖(即使没有-i),除非使用-f强制覆盖。使用
-b备份时,备份文件默认后缀为~,可通过-S修改。当使用通配符移动文件时,建议先
echo确认匹配的文件列表,避免误操作。移动目录时,若目标目录已存在,源目录会被移动到目标目录内部(成为其子目录)。若目标目录不存在且父目录存在,则源目录会被重命名为目标目录名。
mv操作可能改变文件的 inode 编号(跨设备移动时),但权限、时间戳等元数据通常会保留。
相关命令
cp– 复制文件或目录。rm– 删除文件或目录。rename– 批量重命名文件(支持 Perl 正则表达式)。install– 复制文件并设置属性,常用于安装程序。ln– 创建硬链接或符号链接。