macOS终端批量重命名:结合CSV加前缀并裁剪文件名
批量重命名文件解决方案
前置条件
- 已通过Homebrew安装
rename工具 - 单列CSV文件(示例命名为
codes.csv),每行对应一个国家/语言代码,顺序与文件的X值(1至24)完全匹配(第一行对应X=1的文件,第二行对应X=2,以此类推) - 所有目标
.png文件与codes.csv处于同一目录,终端已切换到该目录
批量处理命令
使用Shell循环结合rename工具,一次性完成两个重命名操作:
#!/bin/bash line_num=1 while IFS= read -r code; do # 匹配对应X值的目标文件 target_file="*_Data Set ${line_num}-01.png" # 预览重命名结果(不会实际修改) rename -n "s/(.*)_Data Set ${line_num}-01(\.png)/${code}_\$1\$2/" "$target_file" line_num=$((line_num + 1)) done < codes.csv
关键说明
- 预览验证:命令中的
-n参数用于预览重命名结果,不会实际修改文件名。先运行该命令,确认输出的新文件名符合EN_01-NameOfProject.png的格式要求。 - 执行修改:确认预览结果无误后,移除
-n参数,重新运行命令即可完成实际重命名。 - 正则逻辑:
(.*)_Data Set ${line_num}-01(\.png):捕获文件名中_Data Set X-01之前的核心部分(如01-NameOfProject)和后缀.png${code}_\$1\$2:将捕获的部分替换为「代码前缀+核心文件名+后缀」的目标格式
特殊情况处理
- 若CSV文件包含表头,请先删除表头行,或把
line_num初始值设为0(确保第一行代码对应X=1的文件) - 若文件名包含空格或特殊字符,确保
target_file变量用双引号包裹,避免匹配错误
内容的提问来源于stack exchange,提问作者Kostis K.
相关产品推荐
相关产品推荐

