You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于sql文件指令批量重命名目录下的unl数据文件

解决方案

操作思路

  • 从database.sql中提取所有规范的unl文件名,建立「表名→规范文件名」的映射关系,其中表名是规范文件名中_之前的部分
  • 遍历当前目录下所有现有*.unl文件,提取文件名中.unl之前的部分作为匹配用的表名
  • 根据表名匹配到对应的规范文件名,执行重命名操作

具体操作步骤

  1. 进入目标工作目录
cd /home/barmar/test.dir
  1. 新建重命名脚本rename_unl.sh,内容如下:
#!/bin/bash

# 声明关联数组存储 表名→规范文件名 映射
declare -A name_map
# 从sql文件提取所有规范unl文件名,存入关联数组
while read -r correct_name; do
    table_name="${correct_name%%_*}"
    name_map["$table_name"]="$correct_name"
done < <(grep -oP 'unload file name = \K.*?\.unl' database.sql)

# 遍历现有unl文件执行重命名
for old_file in *.unl; do
    [ -e "$old_file" ] || continue
    old_table="${old_file%.unl}"
    if [ -n "${name_map[$old_table]}" ]; then
        mv -v "$old_file" "${name_map[$old_table]}"
    else
        echo "警告:未找到$old_file对应的规范文件名,已跳过"
    fi
done

如果你用的是MacOS系统,默认grep不支持-P参数,可将上述grep那行替换为:
done < <(awk '/unload file name = /{print $5}' database.sql)

  1. 给脚本添加执行权限
chmod +x rename_unl.sh

注意事项:执行脚本前可以先把mv -v "$old_file" "${name_map[$old_table]}"替换为echo "mv $old_file ${name_map[$old_table]}",先执行预览重命名操作,确认所有映射正确后再改回原命令执行真实重命名,避免误操作。

内容的提问来源于stack exchange,提问作者TenEM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:15:02