首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bash脚本-循环遍历文件并添加到不同的变量

bash脚本-循环遍历文件并添加到不同的变量
EN

Stack Overflow用户
提问于 2020-01-17 04:24:04
回答 1查看 165关注 0票数 0

我有一些文件的名称如下:

代码语言:javascript
运行
复制
0195_R1.fastq
0195_R2.fastq
0196_R1.fastq
0196_R2.fastq
0197_R1.fastq
0197_R2.fastq

诸若此类。

我需要为每一对文件( R1和R2彼此对应)运行一个软件,如下所示:

代码语言:javascript
运行
复制
bowtie2 -x index_files -1 0195_R1.fastq -2 0195_R2.fastq -S 0195_output.sam

如果有多个对,我将不得不多次运行。因此,我尝试使用for循环编写一个bash脚本,但没有成功。另外,我不知道如何按顺序重命名输出。

我尝试过以下几种方法:

代码语言:javascript
运行
复制
for R1 in $FQDIR/*_R1.fastq; do
for R2 in $FQDIR/*_R2.fastq; do

    bowtie2 -x index_files -1 $R1 -2 $R2 -S $N_output.sam

done
done

我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 04:31:26

如果遍历所有R1和R2文件,将对所有可能的数据文件对运行bowtie。如果我理解正确的话,这不是您想要的-您只想处理相应的对。

为此,只需循环遍历R1文件,并尝试查找每个文件对应的R2文件:

代码语言:javascript
运行
复制
#!/bin/bash
fqdir=...
for r1 in "$fqdir"/*_R1.fastq; do
    r2=${r1%_R1.fastq}_R2.fastq
    if [[ -f $r2 ]] ; then
        bowtie2 -x index_files -1 "$r1" -2 "$r2" -S "$N"_output.sam
    else
        echo "$r2 not found" >&2
    fi
done

我不确定$N代表什么。也许你可以使用$r1来代替?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59777276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档