美文网首页
基于目录下的许多文件批量生成脚本

基于目录下的许多文件批量生成脚本

作者: 风知秋 | 来源:发表于2023-09-19 10:19 被阅读0次

    目前的情况是一个目录下有许多文件夹,每个文件夹中都是测序返回的 fq 文件,现在要写一个流程对每个样本进行处理,如果一个个地写有点费劲,故写个简单的 shell 命令来完成。

    对于每个文件,想要生成的脚本类似这种,包含多行命令,每行命令都包括文件名在内的字符,即输入和输出文件都以文件名有关

    #PBS -N test

    #PBS -l nodes=1:ppn=1

    #PBS -l walltime=12:00:00

    #PBS -q batch

    #PBS -S /bin/bash

    hisat2     -x     /directory/genome_tran     -1     /directory/test_1.fq.gz    -2   /directory/test_2.fq.gz      -S      /directory/test.sam

    grep 'NH:i:1'     /directory/test.sam     |    grep -v 'ZS:i'    >     /directory/test_align.sam

    想法是:

    搞一个文件,每行是一个文件名;

    ls > filename 

    然后读取文件,每一行作为一个变量,将变量写入每行的命令以及生成的文件名中;

    写个循环,然后一行一行写;

    cat filename |

    while read name

    do

    echo "#PBS -N $name" >> ${name}.pbs

    echo "#PBS -l nodes=1:ppn=1" >> ${name}.pbs

    echo "#PBS -l walltime=12:00:00" >> ${name}.pbs

    echo "#PBS -q batch" >> ${name}.pbs

    echo "#PBS -S /bin/bash" >> ${name}.pbs

    echo "" >> ${name}.pbs

    echo "hisat2     -x    /directory/genome_tran     -1     /directory/$name/${name}_1.fq.gz     -2    /directory/$name/${name}_2.fq.gz      -S     /directory/$name.sam"    >>    ${name}.pbs

    echo "grep    'NH:i:1'     /directory/$name.sam   |   grep -v 'ZS:i'    > /directory/${name}_align.sam"   >>    ${name}.pbs

    done

    相关文章

      网友评论

          本文标题:基于目录下的许多文件批量生成脚本

          本文链接:https://www.haomeiwen.com/subject/flunvdtx.html