如何将输出文件保存在相应的文件夹
问题描述:
我在不同的文件夹中有很多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
答
假设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"
超级!非常感谢你 – user3224522