在文件夹内进行多级迭代,以查找Windows上的所有文本文件

时间:2017-04-13 09:57:51

标签: perl

我有一个场景,我需要遍历多个级别的目录来查找文本文件。

说,我从文件夹C:\A开始,然后我想读取其中的所有文本文件。但他们并没有处于同一水平。

某些文字文件排列在C:\A\A1\sample1.txt

部分为C:\A\sample2.txt

部分为C:\A\A2\A3\sample.txt

我能够在文件夹A中循环,它返回我A1A2,但我想知道是否有一种方法可以自动迭代到每个级别并返回文本文件以其路径。 ANCE!

2 个答案:

答案 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. 
}