我有一个场景,我需要遍历多个级别的目录来查找文本文件。
比如说,我从文件夹C:A
开始,然后我想读取其中的所有文本文件。但它们没有被放置在同一水平。
一些文本文件排列在 C:AA1sample1.txt
有些是C:Asample2.txt
有些是C:AA2A3sample.txt
我能够在文件夹 A 内循环,该文件夹返回我A1
和A2
,但我想知道是否有一种方法会自动迭代到每个级别并将文本文件及其路径返回给我。哎呀!
我会使用File::Find::Rule
:
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find::Rule;
my @files = File::Find::Rule -> file()
-> name('sample*.txt')
-> in ( 'C:\A' );
foreach my $file ( @files ) {
print "Found: $filen";
#process it here.
}
使用 File::Find
模块来执行此操作。
use strict;
use warnings 'all';
use File::Find 'find';
my @files;
find(sub {
push @files, $File::Find::name if -f and /.txt$/i;
}, 'C:A');
print "$_n" for @files;