加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用Perl读取一个目录下的所有文件名

发布时间:2020-12-16 00:31:03 所属栏目:大数据 来源:网络整理
导读:如果你想用Perl读取一个目录下的所有文件名,你应该怎么办呢?一般来讲,我喜欢用两种方法。 第一种方法,直接用 readdir 来读取目录句柄。 use warnings; use strict; my $dir = "./test"; my $file; my @dir; opendir (DIR,$dir) or die "can't open the d

如果你想用Perl读取一个目录下的所有文件名,你应该怎么办呢?一般来讲,我喜欢用两种方法。

第一种方法,直接用readdir来读取目录句柄。

use warnings;
use strict;

my $dir = "./test";
my $file;
my @dir;

opendir (DIR,$dir) or die "can't open the directory!";
@dir = readdir DIR;
foreach $file (@dir) {
if ( $file =~ /[a-z]*.zip/) {
print $file;
} else {
print "Not the kind of file type you want!n";
}
}

这段代码的含义就是:打开一个目录,读取所有的文件名,如果该文件名是以字母开头、并以.zip为后缀结尾的,则输出文件名称;否则,就输出提示消息。

当然,这段代码只会读取当前目录下的内容,并不会递归地寻找子目录下的内容。

第二种方法,直接用外部命令find

在Unix Shell或是Cygwin里,有命令find可以直接读出目录下的文件名,而我们只要在Perl脚本里调用这个命令就可以了。

use warnings;
use strict;

my $dir = "./test";
my @file;
my $filename;


@file = `find $dir -type f`;

foreach $filename (@file) {
print $filename;
}

上面的代码就直接调用外部命令find来进行查找与读取。这个时候,查找的结果,完全由你所调用的外部命令所控制。

两个方法都比较方便,第一种的移植性更强,推荐使用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读