我有一个场景,我需要遍历多个级别的目录来查找文本文件。
说,我从文件夹C:\A
开始,然后我想读取其中的所有文本文件。但他们并没有处于同一水平。
某些文字文件排列在C:\A\A1\sample1.txt
部分为C:\A\sample2.txt
部分为C:\A\A2\A3\sample.txt
我能够在文件夹A中循环,它返回我A1
和A2
,但我想知道是否有一种方法可以自动迭代到每个级别并返回文本文件以其路径。
ANCE!
答案 0 :(得分:0)
使用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;
答案 1 :(得分:0)
我使用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: $file\n";
#process it here.
}