如何编写脚本批量将文本列表标签作为后缀重命名指定目录文件?
批量重命名脚本实现方案
需求说明
将/home/linux/test/目录下的.ext文件,按照labels.txt中的对应标签,重命名为[原文件名前缀] - [标签].[后缀]的格式。
实现脚本
#!/bin/bash # 配置目标目录和标签文件路径 TARGET_DIR="/home/linux/test" LABEL_FILE="./labels.txt" # 读取目录下的.ext文件并排序,存入数组 mapfile -t FILES < <(ls -1 "${TARGET_DIR}"/*.ext | sort) # 读取标签文件内容到数组 mapfile -t LABELS < "${LABEL_FILE}" # 校验文件与标签数量是否匹配 if [ ${#FILES[@]} -ne ${#LABELS[@]} ]; then echo "错误:文件数量和标签数量不匹配,请检查" exit 1 fi # 遍历执行重命名 for i in "${!FILES[@]}"; do # 获取当前文件和对应标签 current_file="${FILES[$i]}" current_label="${LABELS[$i]}" # 提取文件名(不含路径)、前缀和后缀 filename=$(basename "$current_file") name_prefix="${filename%.*}" name_suffix="${filename##*.}" # 构建新文件名并执行重命名 new_filename="${name_prefix} - ${current_label}.${name_suffix}" mv "$current_file" "${TARGET_DIR}/${new_filename}" echo "完成重命名:$filename → $new_filename" done
使用步骤
- 将上述代码保存为
batch_rename.sh - 赋予脚本执行权限:
chmod +x batch_rename.sh - 建议先测试:将脚本中的
mv改为echo mv,运行后确认重命名预览结果无误 - 确认无误后,恢复
mv命令并执行脚本:./batch_rename.sh
注意事项
- 确保
labels.txt中每行一个标签,无空行或多余内容,且标签数量与目标目录下的.ext文件数量一致 - 若目标目录下的文件排序有特殊要求,可调整
ls的排序参数(默认按文件名升序)
内容的提问来源于stack exchange,提问作者vt1662998251
相关产品推荐
相关产品推荐

