使用来自不同目录的床工具将多个bam转换为床

时间:2016-02-02 11:14:39

标签: bash sh

我在路径cd / home / vdas / ChIP-Seq / output /下有多个目录 目录列表

drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_12_O_319_K27ac
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_12_O_319_K27me3
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_12_O_319_K4me1
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_12_O_319_K4me3
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_12_O_319_input
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_13_O1_122_K27ac
drwxrwxrwx 3 vdas   DPT    7 Feb  2 10:41 S_13_O1_122_K27me3

在每个目录中都有一个* .sorted.bam文件。我想编写一个bash脚本,它将进入每个示例目录并运行以下命令

bedtools bamToBed -i input .bam > out.bed

我写了一个小的bash脚本,但它没有用。你能告诉我哪里出错吗

#!/bin/sh
#
#$ -N bam2bed
#$ -cwd
#$ -e err_bam2bed.log
#$ -o out_bam2bed.log
#$ -S /bin/sh
#$ -M xyz@gmail.com
#$ -m bea
#$ -l h_vmem=25G

cd /home/vdas/ChIP-Seq/output
for x in `ls S*/*.sorted.bam` ; do
    echo "print current:$x"
    bedtools bamToBed -i "$x" > "${x%.bam}.bed"
done
echo "done"

我在哪里弄错了。我不打算写过重复命令,所以应该是创建for循环的确切方法。如果没有错,这应该没问题。让我知道。

1 个答案:

答案 0 :(得分:1)

试试这个

cd /home/vdas/ChIP-Seq/output
for x in S*/*.sorted.bam ; do
    echo "print current:$x";
    bedtools bamToBed -i "$x" > "${x%.bam}.bed";
done
echo "done"