2016-12-02 95 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