我在不同文件夹中有很多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
答案 0 :(得分: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"