【shell脚本】通过遍历文件的一种批量执行shell命令的方法。

在分析数据时,经常会有许多机械重复的命令带入,作为一个半路出家的程序猿,我曾经对这种工作束手无策。不像一个熟手那样举重若轻的分析,感觉自己的生信分析完全是个体力活。为了打开这样的局面,我开始学习如何批量处理这些文件名格式差不多的文件。

 1 work_dir=/home/genomics/data/rice/variantcalling
 2 reference=/home/genomics/data/rice/ref-database/*****
 3 bwa_dir=$work_dir/resourses/apps/bwa-0.7.11
 4 picard_dir=$work_dir/resourses/apps/picard-tools-1.119
 5 for i in *sam
 6 do
 7 echo $i
 8 echo ${i%.*}.sorted.bam
 9 nohup java -Xmx60g -jar $picard_dir/AddOrReplaceReadGroups.jar \
10 I=$i \
11 O=${i%.*}.sorted.bam \
12 SORT_ORDER=coordinate \
13 CREATE_INDEX=true \
14 RGID=${i%.*} \
15 RGLB="pe" \
16 RGPU="Hiseq-2000" \
17 RGSM=${i%.*} \
18 RGCN="African rice resequenced" \
19 RGDS=osativa \
20 RGPL=illumina \
21 VALIDATION_STRINGENCY=SILENT 1>${i%.*}.AddOrReplaceReadGroups.log 2>&1 &
22 done

这是一个批量处理sam2bam的脚本,可以遍历work_dir中的所有符合正则表达式

*sam

的文件名,可以解决重复机械的命令输入。最后注意log文件一定要加上,这是nohup的特性,nohup会在后面的博文中找资料做详细解释。

用这种方法就可以批量处理文件名格式类似的文件。

另外我发现他的遍历是字符顺序而不是数字顺序。

这也是我第一篇博文,撒花!!!!!!!!!!




posted @ 2018-04-17 16:41  xjce  阅读(3418)  评论(0编辑  收藏  举报