## removesmalls.pl
#!/usr/bin/perl
use strict;
use warnings;
my $minlen = shift or die "Error: `minlen` parameter not provided\n";
{
local $/=">";
while(<>) {
chomp;
next unless /\w/;
s/>$//gs;
my @chunk = split /\n/;
my $header = shift @chunk;
my $seqlen = length join "", @chunk;
print ">$_" if($seqlen >= $minlen);
}
local $/="\n";
}
执行脚本如下:
perl removesmalls.pl 1000 contigs.fasta > contigs-1000.fasta
上面的脚本对我有用,但是有问题, 我有109个不同的fasta文件,它们具有不同的文件名。 我可以为单个文件运行脚本,但是我想一次为所有文件运行脚本,并且每个文件的结果文件应该分别不同。
文件名类似于SRR8224532.fasta,SRR8224533.fasta,SRR8224534.fasta等 在删除重叠群(即对我来说少于1000个)后,我想要结果文件,例如SRR8224532-out.fasta, SRR8224533-out.fasta,等等。
任何帮助或建议都会有所帮助。