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

관련 문제