问题描述
我想做一个循环以运行多个输入文件,并为每个输入文件生成一个输出文件。
我可以使用此命令从1个输入sam文件制作1个输出bam文件:
samtools view -S -b -h $input_file > $output_file
其中:
input_file="/scratch/RNAseq/hisat2_alignment/456.sam"
output_file="/scratch/RNAseq/BAM_files/raw_BAM/456.bam"
在将此命令放入循环中时,我不确定如何使用$output_file
等价物。因为我不知道如何更改$many_output_file variable
所需的文件路径和文件扩展名:
many_input_files="/scratch/RNAseq/hisat2_alignment/*.sam"
for i in $many_input_files
do
samtools view -S -b -h $i > $many_output_file
done
有人可以帮忙吗?我是Bash的新手,我通常使用R。我曾尝试使用sed和tr,但是当我尝试从many_output_file
制作many_input_files
的文件列表时,它们似乎出现了错误。
解决方法
由于注释的帮助,这就是使循环工作的方式:
for i in $input_files
do
tmp=${i/hisat2_alignment/BAM_files/raw_BAM}
samtools view -S -b -h $i > ${tmp/.sam/.bam}
done