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

如何让Bash脚本自动识别文件名中的receptor分组并批量执行任务

自动识别所有Receptor分组并批量处理的Bash脚本修改方案

直接替换你原来的set_receptor函数和后续代码,改成以下逻辑即可实现自动识别所有唯一的receptor分组,一次性完成所有任务:

# 从符合命名格式的文件中提取所有唯一的receptor分组
receptors=($(for file in "${docking_pdb}"/*_*_*_rep*.${lig_ext}; do
    # 提取文件名(去掉路径和后缀),按下划线分割取第3段(对应receptor)
    basename "$file" .${lig_ext} | cut -d'_' -f3
done | sort -u))

# 检查是否找到有效分组
if [ ${#receptors[@]} -eq 0 ]; then
    echo "错误:在${docking_pdb}目录下未找到符合*_*_*_rep*.${lig_ext}格式的文件"
    exit 1
fi

# 循环处理每个receptor分组
for receptor in "${receptors[@]}"; do
    echo "=== 正在处理Receptor分组: $receptor ==="
    for pdb in "${docking_pdb}"/*_${receptor}_*.${lig_ext}; do
        pdb_name=$(basename "$pdb" .${lig_ext})
        pdb_name="${pdb_name/_rep1}"
        echo "Converting ${output}: the system ${pdb_name}"
        # 在这里添加你实际的文件处理命令(比如转换、执行程序等)
    done
done

逻辑说明

  1. 提取唯一Receptor:遍历目标目录下所有符合命名规则的文件,用basename剥离路径和后缀,再用cut按下划线分割文件名,提取第3段(对应你的${receptor}字段),最后用sort -u去重得到所有唯一分组。
  2. 边界检查:如果没有找到任何符合格式的文件,脚本会报错并退出,避免无意义的空循环。
  3. 批量处理:外层循环遍历每个receptor分组,内层循环执行你原来的文件处理逻辑,无需手动切换分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:41:32