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

Bash中遍历两个目录按序传递配对文件给Python比较脚本的实现方法

双目录配对文件遍历Shell实现方案

方案1:序号循环方案(适配你当前file00~file49的命名规则,最稳定)

这个方案完全匹配你要求的按序号配对逻辑,不会出现乱序问题:

#!/bin/bash

# 请修改以下三个路径为你的实际路径
DIR1="./dir1"
DIR2="./dir2"
PY_COMPARE_SCRIPT="./your_compare.py"

# 循环00到49,自动生成两位补零的序号
for seq in {00..49}; do
    target_file1="${DIR1}/file${seq}"
    target_file2="${DIR2}/file${seq}"
    # 校验两个文件都存在再执行对比,避免传入无效参数
    if [[ -f "${target_file1}" && -f "${target_file2}" ]]; then
        echo "正在对比:${target_file1} | ${target_file2}"
        python3 "${PY_COMPARE_SCRIPT}" "${target_file1}" "${target_file2}"
    else
        echo "跳过序号${seq}:存在配对文件缺失"
    fi
done

注意:如果后续文件数量变化,直接修改{00..49}的起止序号即可

方案2:通用排序配对方案(适用于文件名不固定的场景)

如果两个目录下的文件名不是固定的序号格式,仅需要按字典序排序后一一配对,可以用这个方案:

#!/bin/bash
DIR1="./dir1"
DIR2="./dir2"
PY_COMPARE_SCRIPT="./your_compare.py"

# 将两个目录下的文件排序后分别存入数组
mapfile -t files_dir1 < <(ls -1 "${DIR1}" | sort)
mapfile -t files_dir2 < <(ls -1 "${DIR2}" | sort)

# 先校验文件数量是否匹配
if [[ ${#files_dir1[@]} -ne ${#files_dir2[@]} ]]; then
    echo "错误:两个目录文件数量不一致,无法完成配对"
    exit 1
fi

# 按下标配对文件
for index in "${!files_dir1[@]}"; do
    target_file1="${DIR1}/${files_dir1[$index]}"
    target_file2="${DIR2}/${files_dir2[$index]}"
    echo "正在对比:${target_file1} | ${target_file2}"
    python3 "${PY_COMPARE_SCRIPT}" "${target_file1}" "${target_file2}"
done

使用步骤

  • 将对应方案的代码保存为run_compare.sh文件
  • 修改文件开头的三个路径参数为你本地的实际路径
  • 给脚本添加执行权限:chmod +x run_compare.sh
  • 执行脚本即可批量完成配对对比:./run_compare.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:18:04