perl - 如何使用 perl 获取子目录中存在的文件名数组(不使用 File::Find)
问题描述
我正在尝试获取子目录中存在的文件的名称。此外,我想获取数组的大小并在单个文件中搜索文本
#!/usr/bin/perl
$dir = $ARGV[0];
my @filesList;
opendir(DIR, $dir) || die "Unable to open the directory";
@contents=readdir(DIR);
foreach $listitem ( @contents )
{
if ( -d $listitem )
{
opendir(DIR,$listitem);
@c1=readdir(DIR);
foreach $firstlevel(@c1) # first level directory structure
{
if (-d $firstlevel) {
opendir(DIR,$firstlevel);
@c2=readdir(DIR);
foreach $secondlevel(@c2) { #second level directory structure
push(@filesList, $secondlevel);
}
} else {
# push(@filesList, $firstlevel);
}
}
#push(@filesList, $listitem);
} else {
push(@filesList, $listitem);
}
}
$size = @filesList;
print "array size : $size";
foreach $file(@filesList)
{
print "$file";
}
close(DIR);
所有这一切我想在不使用的情况下工作Find::Find
,我得到了错误use File::Find
另外,我怎样才能得到数组的大小
解决方案
scalar
是获得数组大小所需要的,尽管您可以省略标量并仍然获得看起来已经拥有的元素数量。如果不是这个,您必须澄清“数组大小”的确切含义。更简洁的方法是使用 File::Find,但如果您只是想要快速的东西,您可以使用反引号进行系统调用来查找或任何其他系统命令:
use strict;
use warnings;
my @files = `find $ARGV[0] -type f`;
my $size = scalar(@files);
print "Number of files = $size\n";
foreach my $file(@files) {
print "$file";
}
推荐阅读
- javascript - 如何重构 catch 方法
- python - Apache Beam Python SDK ReadFromKafka 不接收数据
- javascript - 从 SVG 标记外部克隆时,SVG 多边形不呈现
- c++ - 如何将 C 库添加到 Windows?
- yii2 - Yii2 为 BaseArrayHelper.php 中的 foreach() 提供的参数无效
- javascript - 如何在 Vue 中使用全局函数?
- python - python - 如何在漂亮的Python中擦除中间垂直线?
- css - “绝对”文本容器下方的位置划分
- sql - 如何查找重复的图像
- api - YII2 client->createRequest() 忽略验证