我有一个读取.txt和.bam文件的perl脚本,并创建一个名为output.txt的输出。
我有很多文件都在不同的文件夹中,但在文件名和目录路径上只是略有不同。
我的所有txt文件都在名为PointMutation的不同子文件夹中,完整路径为
/Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/PointMutation
括号中的文本是更改的部分,但Patient子文件夹包含我的所有txt文件。
我的.bam文件位于一个名为DNA的子文件夹中,其完整路径为
/Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/SequencingData/DNA
目前我如何运行这个脚本是在终端上
cd /Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/PointMutation
perl ~/Desktop/Scripts/Perl.pl "/Volumes/Lab/Data/Darwin/Patient/[Plate
1/P1H10]/PointMutation/txtfile.txt" "/Volumes/Lab/Data/Darwin/Patient/[Plate
1/P1H10]/SequencingData/DNA/bamfile.bam"
只有一个或两个文件,这很容易,但我希望一旦文件变得更大就自动化它。此外,一旦我运行这些,我不想再这样做,但我会从同一个病人那里获得更多信息,有没有办法阻止文件夹被读取?
我会做的事情如下:
for my $dir (glob "/Volumes/Lab/Data/Darwin/Patient/*/"){
# skip if not a directory
if (! -d $dir) {
next;
}
my $txt = "$dir/PointMutation/txtfile.txt";
my $bam = "$dir/SequencingData/DNA/bamfile.bam";
# ... you magical stuff here
}
这假设/Volumes/Lab/Data/Darwin/Patient/
下的所有目录都遵循惯例。
也就是说,更长期/更健壮的方式来组织分析,包括遍布各个地方的大量不同文件,或者1)在一个目录下组织每个分析所需的所有文件,或2)创建元文件(我使用JSON / yaml)包含必要的文件名。