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

如何自动化匹配文件名批量执行relplot.pl处理RNAfold输出文件对

批量处理RNAfold输出文件对的relplot.pl自动化方案

方法一:Bash基础循环(适合无特殊字符的文件名)

直接提取所有唯一的文件前缀,循环配对执行relplot.pl:

# 提取所有唯一前缀并批量处理
for prefix in $(ls *_ss.ps | sed 's/_ss\.ps$//' | sort -u); do
  # 先检查对应_dp.ps文件是否存在,避免报错
  if [ -f "${prefix}_dp.ps" ]; then
    relplot.pl "${prefix}_ss.ps" "${prefix}_dp.ps" > "${prefix}_rss.ps"
    echo "已生成: ${prefix}_rss.ps"
  else
    echo "⚠️  缺失对应文件: ${prefix}_dp.ps,跳过该组"
  fi
done

说明:

  • ls *_ss.ps列出所有结构文件,sed 's/_ss\.ps$//'去掉后缀提取前缀,sort -u确保前缀唯一
  • 加入文件存在检查,避免因缺失文件导致命令报错中断

方法二:更稳健的find循环(支持含空格的文件名)

如果你的文件名包含空格或特殊字符,用find+while read的组合更可靠:

# 遍历当前目录下所有_ss.ps文件,配对处理
find . -maxdepth 1 -type f -name "*_ss.ps" | while read ss_file; do
  # 提取文件前缀(去掉路径和_ss.ps后缀)
  prefix=$(basename "$ss_file" _ss.ps)
  dp_file="${prefix}_dp.ps"
  
  if [ -f "$dp_file" ]; then
    relplot.pl "$ss_file" "$dp_file" > "${prefix}_rss.ps"
    echo "已生成: ${prefix}_rss.ps"
  else
    echo "⚠️  缺失对应文件: $dp_file,跳过该组"
  fi
done

说明:

  • find . -maxdepth 1限制只处理当前目录,-type f确保是文件
  • basename命令安全提取前缀,不受路径和特殊字符影响

使用贴士

  1. 确保relplot.pl可直接调用,若不在系统PATH中,替换成绝对路径(比如./relplot.pl或/path/to/relplot.pl)
  2. 可以把上述代码保存为batch_relplot.sh,执行chmod +x batch_relplot.sh赋予执行权限后,运行./batch_relplot.sh即可批量处理
  3. 若需要处理子目录中的文件,去掉find命令中的-maxdepth 1参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:35:03