#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`命令或需简单逻辑时使用。 --- ### ⚠️ ​**​四、注意事项与常见问题​**​ 1. ​**​权限问题​**​: - 无权限时报错,使用`sudo`提权: ``` sudo mv protected_file new_name ``` 2. ​**​文件名冲突​**​: - 目标文件已存在时,`mv`会覆盖(用`-i`避免误覆盖): ``` mv -i old.txt existing.txt # 覆盖前询问 ``` 3. ​**​特殊字符处理​**​: - 文件名含空格或特殊符号时,用引号包裹: ``` mv "file with spaces.txt" no_spaces.txt ``` 4. ​**​批量操作风险​**​: - 使用`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' *`| > 提示:操作前建议备份重要文件!批量重命名可先在测试目录验证命令效果。