command.py
,将两个配对文件CA01_S1_R1.fastq
和CA01_S1_R2.fastq
合并在一起。然后,它将结果打印到新目录paired.out
中,并将结果文件命名为paired.fastq
。完整的命令将读取
command.py -f CA01_S1_R1.fastq -r CA01_S1_R2.fastq -o paired.out
但是,我想在许多文件上执行此命令,然后将所有输出保存到同一目录中。此外,输出需要具有唯一的名称。所以,我也想发送文件2和3,也有效地运行这些命令:
command.py -f CA02_S2_R1.fastq -r CA02_S2_R2.fastq -o paired.out
command.py -f CA03_S3_R1.fastq -r CA03_S3_R2.fastq -o paired.out
但是,即使我有代码在所有样本上循环此命令,该命令仍会覆盖最后一个配对的输出,因为所有输出都保存在文件夹paired.out
内,文件名为{{ 1}}。是否有一个我可以编写的简单循环,它将通过命令发送每个文件对,然后输入文件夹并将文件输出从paired.fastq
重命名为paired.fastq
,然后重复我的所有文件?
我知道我可以使用以下命令通过命令发送多个文件:
CA01_paired.fastq
我想在此循环中添加第二条指令,只需cd进入此文件夹,然后重命名该文件,每次递增1。我不知道如何设置增量变量。我想它看起来像这样:
for f in CA*_S*_R1.fastq; do
# Replace R1 with R2 in the filename and run the command on both files.
command.py -f "$f" -r "${f/R1/R2}" -o paired.ends
done; unset -v f
答案 0 :(得分:1)
假设文件已通过blah_R1.fastq
和blah_R2.fastq
配对:
for f in *_R1.fastq; do
r=${f/_R1/_R2}
command.py -f "$f" -r "$r" -o paired.out &&
mv paired.out/paired.fastq paired.out/"${f%%_*}_paired.fastq"
done