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

Linux Bash脚本实现同名文件夹间指定文件批量复制

Bash脚本实现批量复制指定文件夹内的U文件

需求说明

你需要批量复制源目录下命名为0、0.1……10的文件夹中的U文件,到目标目录的对应同名文件夹中,同时将目标文件夹内controlDict文件的endTime替换为startTime。

正确实现脚本

# 替换为你的实际源目录和目标目录
SOURCE_DIR="/你的源目录路径"
TARGET_DIR="/你的目标目录路径"

# 生成从0到10、步长0.1的小数序列(覆盖所有目标文件夹)
for dir_name in $(seq -f "%.1f" 0 0.1 10)
do
    # 检查源文件是否存在
    if [ -f "${SOURCE_DIR}/${dir_name}/U" ]; then
        # 确保目标文件夹存在,不存在则创建
        mkdir -p "${TARGET_DIR}/${dir_name}"
        # 复制U文件到目标路径
        cp "${SOURCE_DIR}/${dir_name}/U" "${TARGET_DIR}/${dir_name}/"
        echo "完成复制: ${SOURCE_DIR}/${dir_name}/U -> ${TARGET_DIR}/${dir_name}/"

        # 替换controlDict中的endTime为startTime(如果文件存在)
        if [ -f "${TARGET_DIR}/${dir_name}/controlDict" ]; then
            # GNU sed写法,macOS请改为 sed -i '' 's/endTime/startTime/g'
            sed -i 's/endTime/startTime/g' "${TARGET_DIR}/${dir_name}/controlDict"
            echo "完成替换: ${TARGET_DIR}/${dir_name}/controlDict 中的endTime为startTime"
        fi
    else
        echo "警告: ${SOURCE_DIR}/${dir_name}/U 不存在,跳过该文件夹"
    fi
done

脚本关键说明

  • seq -f "%.1f" 0 0.1 10:生成保留1位小数的序列,精准匹配你的文件夹命名规则。
  • mkdir -p:自动创建目标文件夹(包括父目录),避免因路径不存在导致复制失败。
  • 增加存在性检查:跳过缺失U文件的文件夹,避免脚本中断。
  • sed替换:注意系统差异,GNU/Linux用sed -i,macOS需要用sed -i ''。

原脚本问题修正

你提供的初始脚本存在以下问题:

  1. 变量赋值错误:Bash中变量赋值时等号两侧不能有空格,比如N = 100应改为N=100。
  2. 序列生成错误:seq 1 $N生成的是整数序列,无法匹配你的小数命名文件夹,需要用带步长的seq命令生成小数序列。
  3. 路径写法错误:cp命令需要明确的源文件和目标路径,不能用注释占位符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:42