3.0 KiB
3.0 KiB
#linux #ubuntu
在Linux命令行界面中,文件重命名主要通过以下方法实现,涵盖单文件重命名、批量操作及常见问题处理:
📁 一、单文件重命名:mv命令
语法:
mv [选项] 旧文件名 新文件名
示例:
mv old_file.txt new_file.txt # 将文件重命名
mv file.txt /new/path/renamed.txt # 移动并重命名
常用选项:
-i:覆盖前确认(避免误操作)-v:显示操作详情-b:覆盖前备份原文件
场景:
- 简单重命名或移动文件到新路径时使用。
🔄 二、批量重命名:rename命令(Perl版)
安装(部分系统需手动安装):
sudo apt install rename # Debian/Ubuntu
sudo yum install perl-rename # CentOS/RHEL
语法:
rename 's/旧模式/新模式/' 文件列表
示例:
rename 's/\.txt/.md/' *.txt # 扩展名.txt→.md
rename 's/old_/new_/' *.log # 文件名中old_→new_
rename 's/\s+/_/g' * # 空格替换为下划线
rename -n 's/pattern//' *.log # 仅预览不执行(-n选项)
优势:支持正则表达式,灵活处理复杂规则。
🔁 三、循环批量重命名:for + mv
语法:
for file in 匹配模式; do mv "$file" "新文件名"; done
示例:
# 所有.txt文件添加前缀"backup_"
for f in *.txt; do mv "$f" "backup_$f"; done
# 扩展名.txt→.bak
for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
适用场景:
- 无
rename命令或需简单逻辑时使用。
⚠️ 四、注意事项与常见问题
-
权限问题:
-
无权限时报错,使用
sudo提权:sudo mv protected_file new_name
-
-
文件名冲突:
-
目标文件已存在时,
mv会覆盖(用-i避免误覆盖):mv -i old.txt existing.txt # 覆盖前询问
-
-
特殊字符处理:
-
文件名含空格或特殊符号时,用引号包裹:
mv "file with spaces.txt" no_spaces.txt
-
-
批量操作风险:
- 使用
rename -n预览效果后再执行。
- 使用
💎 五、场景推荐
| 需求 | 推荐命令 | 示例 |
|---|---|---|
| 单文件重命名 | mv |
mv a.txt b.txt |
| 批量修改扩展名 | rename |
rename 's/\.log/.bak/' *.log |
| 文件名添加统一前缀 | for循环 |
for f in *; do mv "$f" "prefix_$f"; done |
| 复杂规则(正则表达式) | rename |
rename 's/\d+/sprintf("%03d", $&)/e' * |
提示:操作前建议备份重要文件!批量重命名可先在测试目录验证命令效果。