1

我想创建一个循环来运行多个输入文件并为每个输入文件生成一个输出文件。

我可以使用此命令从 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_filefrom的文件列表时,它们似乎出现错误many_input_files

4

1 回答 1

1

这就是我使循环工作的方式,感谢评论中的帮助:

for i in $input_files
do
tmp=${i/hisat2_alignment/BAM_files/raw_BAM}
samtools view -S -b -h $i > ${tmp/.sam/.bam}
done
于 2020-08-21T09:46:02.627 回答