批量重命名匹配正则的文件:求替换h为j的Bash/Python脚本
批量重命名文件:将文件名中的
h替换为j 需求说明
现有如下格式的文件:
abc-h-25-Data.db abc-h-25-Filter.db abc-h-25-Index.db abc-h-25-Metadata.db abc-h-25-Statistics.db abc-h-25-Summary.db
需要批量将文件名中的h替换为j,重命名后得到:
abc-j-25-Data.db abc-j-25-Filter.db abc-j-25-Index.db abc-j-25-Metadata.db abc-j-25-Statistics.db abc-j-25-Summary.db
解决方案
1. Bash 实现
方法一:使用 rename 命令(简洁高效)
直接执行以下命令即可完成批量重命名:
rename 's/h/j/' abc-h-25-*.db
- 解释:
s/h/j/是Perl风格的替换表达式,将文件名中的h替换为j;abc-h-25-*.db匹配所有需要处理的文件。
方法二:使用 for 循环(兼容性更强)
如果系统没有rename命令,可使用通用的for循环:
for file in abc-h-25-*.db; do mv "$file" "${file/h/j}" done
- 解释:
${file/h/j}是Bash的参数替换语法,将变量file中的第一个h替换为j。
2. Python 实现
以下脚本可实现批量重命名,适合需要更复杂逻辑扩展的场景:
import os # 遍历当前目录下的目标文件 for filename in os.listdir('.'): if filename.startswith('abc-h-25-') and filename.endswith('.db'): # 替换文件名中的h为j new_filename = filename.replace('h', 'j') # 执行重命名 os.rename(filename, new_filename)
- 解释:先筛选符合命名规则的文件,再通过字符串替换生成新文件名,最后调用
os.rename完成重命名。
内容的提问来源于stack exchange,提问作者DoraemonGL
相关产品推荐
相关产品推荐

