彼此分配文件

时间:2017-10-10 12:10:30

标签: shell loops bioinformatics

我想将两个文件分配为输入文件。这是一个例子:

directory1
AB001.txt
AB002.txt
AB003.txt
....

directory2
AB001.fasta
AB002.fasta
AB003.fasta
....

所以,我想循环使用相应的* .fasta文件(总是带有匹配的前缀)的5000多个* .txt文件。应对所有* .txt文件执行的命令是:

program -i1 AB001.txt -i2 AB001.fasta > output AB001.aln
program -i1 AB002.txt -i2 AB002.fasta > output AB002.aln
program -i1 AB003.txt -i2 AB003.fasta > output AB003.aln
.
.
.

如何使用shell脚本执行此操作。我仍然是一个新手,但我想了解更多有关简单shell脚本的知识,当然我想使用循环,这样我就不必手动为每个文件执行命令。

1 个答案:

答案 0 :(得分:0)

使用带参数扩展的循环。

#! /bin/bash
for txt in directory1/*.txt ; do
    name=${txt##*/}         # Delete up to the last slash.
    name=${name%.txt}       # Remove `.txt` at the end.
    fasta=directory2/$name.fasta
    program -i1 "$txt" -i2 "$fasta" > ouptut "$name".aln
done

请注意,> output AB001.aln会将程序的输出重定向到名为output的文件,并将AB001.aln作为参数传递给程序。