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

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

作者: 风知秋 | 来源:发表于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