如何使用Perl获取目录中的纯文件列表?

Mik*_*ike 4 perl

我正在寻找一种在Perl中列出目录的普通文件的方法.仅文件,没有目录.

el.*_*ado 11

您需要使用opendir,readdirclosedir-f文件测试运算符一起使用:

opendir(my $dh, $some_dir) || die $!;
while(my $f = readdir $dh) {
    next unless (-f "$some_dir/$f");
    print "$some_dir/$f\n";
}
closedir $dh;
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想对整个树进行深度优先搜索,则File :: Find不是您正在寻找的机器人. (3认同)

too*_*lic 5

列出目录中所有文件的另一种方法是使用read_dirCPAN模块File :: Slurp中的函数:

use strict;
use warnings;
use File::Slurp qw(read_dir);

my $dir = './';
my @files = grep { -f } read_dir($dir);
Run Code Online (Sandbox Code Playgroud)

它会为您执行opendir检查.请记住,它包含任何"隐藏"文件(以点开头的文件).这不会递归列出指定目录的子目录中的文件.