2016-12-02 122 views
0

我在不同的文件夹中有很多allsamples.bam文件,我想从所有文件中提取未映射的读取并将其保存为unmapped.bam,并将其保存到相应的文件夹中,如何操作? allbamfiles.txt包含所有我的bam文件的路径。如何将输出文件保存在相应的文件夹

#!/usr/bin/env bash 
#$ -q cluster 
#$ -cwd 
#$ -N test 
#$ -e /path/to/log 
#$ -o /path/to/log 
#$ -l job_mem=8G 
#$ -pe serial 4 

SAMTOOLS="/path/to/samtools" 

while IFS= read -r file 
    do 
      $SAMTOOLS view -b -f 4 $file > "${file%.bam}_unmapped.bam" 
    done < "/path/to/allbamfiles.txt" 
    wait 

回答

1

假设allbamfiles.txt中的所有文件的路径被引用到当前目录或是绝对路径,该解决方案应该可以工作。

请注意,dirname命令获取文件的路径,basename命令获取文件名。

SAMTOOLS="/path/to/samtools" 
while read file; do 
    dir=$(dirname $file) 
    fileName=$(basename $file) 
    $SAMTOOLS view -b -f 4 $file > "${dir}/${fileName%.bam}_unmapped.bam" 
done < "/path/to/allbamfiles.txt" 
+0

超级!非常感谢你 – user3224522

相关问题