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

基于Bin/Bash脚本批量精准替换文件夹及子项名称的技术咨询

解决方案

1. 先把Excel表格转成CSV格式

把你的Excel文件另存为逗号分隔的CSV文件(比如name_mapping.csv),注意:

  • 删除表头行,只保留旧名称、新名称的对应数据行
  • 如果公司名称包含逗号或空格,确保CSV里用双引号把名称括起来(Excel导出时会自动处理)

2. 编写Bash脚本实现批量重命名

创建脚本文件batch_rename.sh,内容如下:

#!/bin/bash

# 检查CSV文件是否存在
if [ ! -f "$1" ]; then
    echo "错误:指定的CSV文件不存在!"
    exit 1
fi

# 逐行读取CSV文件,处理每一对新旧名称
while IFS=, read -r old_name new_name; do
    # 去除名称两端可能的双引号(如果CSV里有)
    old_name=$(echo "$old_name" | sed 's/^"//;s/"$//')
    new_name=$(echo "$new_name" | sed 's/^"//;s/"$//')

    # 目标1:重命名精准匹配的公司文件夹
    if [ -d "$old_name" ]; then
        echo "正在重命名文件夹:$old_name -> $new_name"
        mv "$old_name" "$new_name"
    else
        echo "警告:文件夹 $old_name 不存在,跳过"
        continue
    fi

    # 目标2:处理新文件夹内的内容,以下二选一(注释掉不需要的选项)

    # --- 选项A:仅重命名完全匹配旧名称的文件/子文件夹 ---
    echo "正在处理 $new_name 内的精准匹配项..."
    find "$new_name" -depth -name "$old_name" -exec sh -c '
        for path do
            dir=$(dirname "$path")
            new_path="$dir/$(basename "$path" | sed "s/^$old_name$/$new_name/")"
            mv "$path" "$new_path"
        done
    ' sh {} +

    # --- 选项B:替换文件名中所有出现旧名称的部分 ---
    # echo "正在处理 $new_name 内的名称替换..."
    # find "$new_name" -depth -exec sh -c '
    #     for path do
    #         dir=$(dirname "$path")
    #         new_name_part=$(basename "$path" | sed "s/$old_name/$new_name/g")
    #         new_path="$dir/$new_name_part"
    #         if [ "$path" != "$new_path" ]; then
    #             mv "$path" "$new_path"
    #         fi
    #     done
    # ' sh {} +

done < "$1"

echo "批量重命名完成!"

3. 脚本使用说明

  1. 给脚本添加执行权限:
    chmod +x batch_rename.sh
    
  2. 运行脚本,传入你的CSV文件路径:
    ./batch_rename.sh name_mapping.csv
    

关键细节说明

  • 精准匹配保障:脚本仅对完全等于旧名称的文件夹执行重命名,避免误改相似名称的目录
  • 特殊字符兼容:通过去除CSV双引号、变量加双引号的方式,支持名称含空格、特殊符号的场景
  • 路径有效性维护:用find -depth确保先处理子层级文件/文件夹,再处理上层,避免重命名过程中路径失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:46:08