#!/usr/bin/perl -w
#use Parallel::ForkManager;
use Data::Dumper;
my $parent='/source';
my $destdir='/destination';
#open parent directory
opendir(DIR, $parent) or die "Can't open the current directory: $!\n";
# read directory names in that directory into @names
my @dirs = grep {-d "$parent/$_" && ! /^\.{1,2}$/} readdir(DIR);
#my $pm=new Parallel::ForkManager();
foreach (@dirs)
{
#$pm -> start and next;
#do only if a folder contains .fastq.gz files
my @txt = <$parent/$_/*.fastq.gz>;
if(@txt)
{
system("zcat $parent/$_/*R1*.fastq.gz | gzip > $destdir/$_.R1.fastq.gz");
system("zcat $parent/$_/*R2*.fastq.gz | gzip > $destdir/$_.R2.fastq.gz");
print "Inside $_ folder \n";
}
#$pm -> finish;
}
大家好,所以我有一个源“$parent/”目录。其中有 32 个子目录。每个目录都包含一些R1 .fastq.gz 文件和R2 .fastq.gz 文件。我必须将R1 .fastq.gz 文件合并到一个 R1.fastq.gz 文件中,对于R2 .fastq.gz 文件也是如此。合并的 fastq.gz 文件存储在目标目录“$destdir/”中。我还希望合并的 fastq.gz 文件的名称与合并和创建它的子目录的名称相匹配(第 23 和 24 行)。当我运行我的代码时,我收到以下错误:
sh: 1: cannot create /destination/Fastqc.R1.fastq.gz: Directory nonexistent
sh: 1: cannot create /destination/Fastqc.R2.fastq.gz: Directory nonexistent
例如,这里的 Fastqc 来自我创建合并文件的目录的名称。我已经尝试过,但我无法弄清楚我的代码有什么问题。有人可以帮忙吗?
当我使用
system("zcat $parent/$_/*R1*.fastq.gz | gzip > $_.R1.fastq.gz"); instead of
system("zcat $parent/$_/*R1*.fastq.gz | gzip > $destdir/$_.R1.fastq.gz");
它工作正常。