Files
obsidian-vault/06 平台与配置/怎么在linux中给文件重命名.md
2026-06-23 00:24:32 +08:00

3.0 KiB
Raw Blame History

#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' *

提示:操作前建议备份重要文件!批量重命名可先在测试目录验证命令效果。