想要批量完成工作,又不想学习编程怎么办,其中一个好办法就是花钱找人帮忙,谈钱伤感情,那还是学习一些技能吧,下面介绍不会编程如何进行批量操作。
通配符“*”
通配符是批量操作中最重要的内容,通配符代表任何数据的内容,例如想要查看#
#显示出当前目录下所有以.fq .gz结尾的文件,就可以使用通配符 ls -1 *.fq .gz #删除当前目录下所有以.log结尾的文件 rm -rf *.log
管道符“|”
管道操作符是批量操作中另一个比较重要的符号,管道的作用顾名思义,它是用来改变数据流的方向,默认数据流方向为屏幕输出,而管道的作用是将数据流导入另外的程序,作为它的输入文件。
#搜索当前目录下所有一点fna结尾的文件,然后删除掉。 find ./ -name *.fna | xargs rm #搜索当前目录下所有一点fna结尾的文件,然后打包压缩。 find ./ -name "*.fna" | xargs tar -zcf genome.tar.gz
sed
sed作为流文本处理器,可以用于批量替换,可以用于批量修改文件中的内容。
$ grep ">" K12.ffn | head -3 >gi| 556503834 |ref|NC_000913.3 |:4636007-4636696 Escherichia coli str. K-12 substr. MG1655, complete genome>gi| 556503834 |ref|NC_000913.3 |:4636696-4638120 Escherichia coli str. K-12 substr. MG1655, complete genome>gi| 556503834 |ref|NC_000913.3 |:4638178-4639530 Escherichia coli str. K-12 substr. MG1655, complete genome #删除掉Escherichia coli 以及后面所有内容$ grep ">" K12.ffn |sed -e 's/ .*//g' |head -3 # 注意其中空格>gi| 556503834 |ref|NC_000913.3 |:190-255>gi| 556503834 |ref|NC_000913.3 |:337-2799>gi| 556503834 |ref|NC_000913.3 |:2801-3733
awk批量生成脚本
awk是Linux下强大的文本处理工具,本身也是一门编程语言,awk可以批量生成脚本。现有5个样品,每个样品有两个测序文件,_1.fq.gz与_2.fq.gz,需要进行同样的处理,需要批量生成脚本,每个脚本只有样品名部分不同,类似与word中的邮件合并功能。
$ ls -1 *.fq.gz |sed 'N;s/\n/ /g' |awk '{print "fastqc -f fastq -o result " $1,$2}' fastqc -f fastq -o result a_1.fq.gz a_2.fq.gzfastqc -f fastq -o result b_1.fq.gz b_2.fq.gzfastqc -f fastq -o result c_1.fq.gz c_2.fq.gzfastqc -f fastq -o result d_1.fq.gz d_2.fq.gzfastqc -f fastq -o result e_1.fq.gz e_2.fq.gz
for循环
这里for循环已经属于编程的内容了,要想进行批量操作,最好还是学编程。从NCBI*载下**nt库包含67个文件,每个文件配有一个md5校验文件,现在需要利用md5sum对每个文件进行校验;
# 使用awk对当前目录下所有tar.gz文件生成校验脚本 $ ls -1 *.gz.md5 |wc 67 67 1139 $ for i in *.gz.md5;do md5sum -c $i; done; nt.00.tar.gz: OKnt.01.tar.gz: OKnt.02.tar.gz: OK