我正在一个文件名以fastq.gz
结尾的目录中工作。使用如下所示的循环,我将运行一个工具。
for i in
{LS {1}}
我的问题是,我希望我的输出文件名以.sai而不是fastq.gz结尾,并保持文件名的其余部分相同。然而,当它在; do if [[ "$i" == *".gz" ]]; then bwa aln ../hg38.fa $i > $i | sed 's/fastq.gz/sai/g'; fi; done
之后首次看到$i
时,它会修改输入文件本身。我试着像>
一样使用它,但这也不起作用。写这个的正确方法是什么?
答案 0 :(得分:1)
您可以使用字符串替换来计算文件名和扩展名。
此外,您不应该依赖ls
输出,而是直接遍历您正在寻找的表达式。
for file in *.gz; do
name="${file%.*}"
file_output="${name}.sai"
bwa aln ../hg38.fa ${file} > ${file_output}
done