我有一个比较对齐的工具。命令是
./mscore -cftit <inputFile> <inputFile2>
结果是控制台中有四行。我尝试做什么?
我有数百个文件:
file1.afa
resFile1.fasta
file2.afa
resFile2.fasta
file3.afa
resFile3.fasta
...
我需要在第一行“X.afa”文件和第二个同名但“X.fasta”文件中加入参数。结果应保存为Xfinal.txt文件或类似的东西。所以我应该有数百个* final.txt文件。 (之后我将在python中捕捉它,并计数)。
我怎么能用bash做到这一点?
我尝试过这样的事情:
#!/bin/bash
ls *.afa | parallel "mscore -cftit {} {}.fasta >{}final.txt"
但当然,它没有用。 Bash它对我来说并不熟悉,我需要快速获得一些生物学结果,我希望自动化我的工作。我会学习它,但现在我需要它快速。有人能帮我吗?
所以我想你想要一系列这样的命令:
mscore -cftit file1.afa resFile1.fasta > File1final.txt
mscore -cftit file2.afa resFile2.fasta > File2final.txt
mscore -cftit file3.afa resFile3.fasta > File3final.txt
...
试试这个:
ls *.afa | while read A; do B=`echo $A | sed 's/^file/resFile/;s/.afa$//'`; ./mscore -cftit $A $B.fasta > ${B}final.txt; done
更好的版本(感谢@tripleee):
for afafile in *.afa; do number="${afafile#file}"; number="${number%.afa}"; ./mscore -cftit "$afafile" "resFile${number}.fasta" > "file${number}final.txt"; done