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

Linux Shell脚本实现8个不连续文件的两两组合输入

实现无重复两两文件组合调用caulatepet.py的bash脚本方案

需求说明

需要处理文件夹内8个文件名不连续的文件:file5.txt、file7.txt、file11.txt、file13.txt、file14.txt、file21.txt、file22.txt、file23.txt,实现所有无重复的两两组合,每次取两个文件作为caulatepet.py的--i参数输入,并生成对应命名的输出文件(如组合file5.txt和file7.txt时,输出文件名为./result/file5_file7.txt)。现有调用示例如下:

caulatepet.py \
  --i file5.txt, file7.txt \
  --menscor men-code.list \
  --stat sex-rd.ratio \
  --out ./result/file5_file7.txt

实现方案

可以通过bash嵌套循环结合数组实现,核心是通过索引控制避免重复组合,具体脚本如下:

# 定义待处理文件数组
files=(file5.txt file7.txt file11.txt file13.txt file14.txt file21.txt file22.txt file23.txt)

# 确保输出目录存在
mkdir -p ./result

# 遍历所有无重复两两组合
for ((i=0; i<${#files[@]}; i++)); do
  for ((j=i+1; j<${#files[@]}; j++)); do
    file1=${files[$i]}
    file2=${files[$j]}
    # 生成符合要求的输出文件名
    out_filename="./result/$(basename "$file1" .txt)_$(basename "$file2" .txt).txt"
    # 调用工具
    caulatepet.py \
      --i "$file1,$file2" \
      --menscor men-code.list \
      --stat sex-rd.ratio \
      --out "$out_filename"
  done
done

关键细节说明

  • 避免重复组合:内层循环从i+1开始,确保每个文件对只被处理一次(比如不会同时处理file5+file7和file7+file5)。
  • 输出目录预处理:mkdir -p命令会自动创建不存在的目录,防止输出时因目录缺失报错。
  • 文件名处理:用basename移除.txt后缀,再拼接成指定格式的输出文件名,保证命名一致性。
  • 参数格式:--i参数中两个文件名直接用逗号连接,不添加空格,避免工具解析参数时出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:57:58