当前位置:首页>Linux>Linux命令每日一清单024:mv--文件移动与重命名命令速查表

Linux命令每日一清单024:mv--文件移动与重命名命令速查表

  • 2026-08-28 15:24:54
Linux命令每日一清单024:mv--文件移动与重命名命令速查表

mv(move)是Linux系统中用于移动文件和目录或对其进行重命名的基本命令。与复制(cp)不同,mv直接更改文件的位置或名称,而不创建新的数据副本,因此操作速度更快且不占用额外磁盘空间。

mv命令在文件系统中通过修改目录项实现移动操作,在同一文件系统内移动时几乎瞬时完成,跨文件系统移动时则实际执行复制和删除操作。掌握mv对于日常文件管理、脚本编写、备份整理等场景至关重要。

1. 基本语法

命令说明
mv [options] source dest
移动/重命名单个文件或目录
mv [options] source... directory
将多个源移动到目标目录
mv file.txt newname.txt
在同一目录中重命名文件
mv dir1 dir2
重命名目录(如果dir2不存在)

2. 移动文件

命令说明
mv file.txt /tmp/
将单个文件移动到其他目录
mv file1.txt file2.txt /backup/
移动多个文件到目标目录
mv *.log /var/log/archive/
移动匹配模式的所有文件
mv /src/file.txt /dest/newname.txt
移动并重命名(一步完成)
mv /home/user/*.pdf ./
将匹配文件移动到当前目录
mv /tmp/*.tmp ~/trash/
批量移动临时文件到回收目录

3. 移动目录

命令说明
mv project/ /opt/
将目录移动到其他位置
mv olddir newdir
重命名目录(newdir不存在时)
mv dir1 dir2 /dest/
移动多个目录到目标位置
mv /src/dir /dest/dir-new
移动并重命名目录
mv */ ./archive/
移动所有子目录到archive目录

4. 覆盖控制

控制目标文件已存在时的行为:

命令说明
mv -i file.txt /dest/
覆盖前提示确认(交互模式)
mv -n file.txt /dest/
永不覆盖已存在的文件
mv -f file.txt /dest/
强制覆盖,不提示(默认行为可被覆盖)
mv -u file.txt /dest/
仅当源文件更新时才移动
mv -v -i file.txt /dest/
交互模式+显示详细信息

5. 备份与安全

保护目标文件,移动前自动创建备份:

命令说明
mv -b file.txt /dest/
覆盖前创建备份(原文件~后缀)
mv --backup=numbered file.txt /dest/
创建编号备份(.~1~, .~2~等)
mv -S .bak -b file.txt /dest/
指定备份文件后缀为.bak
mv -v file.txt /dest/
显示详细信息(显示移动了什么)
mv -vn file.txt /dest/
详细输出+不覆盖

备份示例:

$ ls dest/
oldfile.txt
$ mv -b file.txt dest/
$ ls dest/
file.txt  oldfile.txt~

6. 实用组合模式

命令说明
mv -- *.txt archive/
安全移动以-开头的文件
mv "My File.txt" /dest/
移动文件名包含空格的文件
find . -maxdepth 1 -name '*.tmp' -exec mv -t /tmp/archive {} +
使用find安全移动匹配的文件
mv /path/file{,.bak}
使用花括号扩展快速重命名备份
mv $(ls -t | head -5) ./latest/
移动最新的5个文件
for f in *.jpg; do mv "$f" "${f%.jpg}.png"; done
批量重命名扩展名

7. 批量重命名技巧

命令说明
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
将所有.txt改为.md
rename 's/old/new/' *.txt
使用rename命令批量重命名
ls | grep "pattern" | xargs -I {} mv {} new_{}
批量添加前缀
for f in *; do mv "$f" "$(echo $f | tr 'A-Z' 'a-z')"; done
将所有文件名转换为小写
for f in *; do mv "$f" "${f// /_}"; done
将文件名中的空格替换为下划线

8. 跨文件系统移动

当源和目标位于不同文件系统时,mv的行为会改变:

场景说明
同一文件系统
仅修改目录项,几乎瞬时完成
不同文件系统
实际执行cp + rm,耗时较长
mv /home/file /mnt/usb/
从ext4移动到FAT32,需重新复制数据
cp -r /src /dest && rm -rf /src
模拟跨文件系统移动行为

9. 常用选项速查

选项完整名称说明
-i
--interactive
覆盖前提示确认
-n
--no-clobber
不覆盖已存在的文件
-f
--force
强制覆盖,不提示
-u
--update
仅当源文件更新时移动
-v
--verbose
显示详细信息
-b
--backup
覆盖前创建备份
-S
--suffix
指定备份后缀(配合-b使用)
-t
--target-directory
指定目标目录(便于find配合)

10. 与cp命令对比

操作mvcp
原文件状态
移动后原文件消失
复制后原文件保留
磁盘空间
不占用额外空间(同文件系统)
占用额外磁盘空间
速度
快(同文件系统)
较慢(需要复制数据)
元数据
保留原有属性
默认可能改变时间戳
跨文件系统
执行复制+删除
仅复制

11. 故障排查

问题解决方法
No such file or directory
用ls -l source验证源文件路径是否正确
Permission denied
检查源文件读权限和目标目录写权限;使用sudo
Wrong file overwritten
使用-i或-n选项避免意外覆盖
通配符不匹配隐藏文件*
默认不匹配以.开头的文件,使用.*或shopt -s dotglob
文件名以-开头导致报错
使用--分隔选项和文件名:mv -- -file.txt dest/
文件名含空格导致问题
使用引号包围文件名:mv "my file.txt" dest/
mv提示cross-device link
跨文件系统移动时会自动复制+删除,属正常行为
批量移动后部分文件丢失
先用-v预览;检查目标目录是否存在;考虑使用-t选项

温馨提示: mv是高风险操作,建议遵循以下原则:1)使用-i或-n保护重要文件;2)批量操作前先用ls或find确认匹配范围;3)移动前确认目标目录存在;4)跨文件系统移动大文件时,考虑使用cp+rm以便断点续传。在脚本中使用mv时,务必检查返回值($?)确保操作成功。使用-v选项可以在移动大量文件时提供进度反馈。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTMV

最新文章

随机文章