perl-查询某目录及其子目录下的某类匹配文件

简介: 1、使用finduse strict;use File::Find; my @path = 'e:/xampp';push (@path,'e:/xampp');push (@path,'d:/eclipse-reporting-galileo-SR2-win32');sub wanted {...

1、使用find
use strict;
use File::Find;

my @path = 'e:/xampp';
push (@path,'e:/xampp');
push (@path,'d:/eclipse-reporting-galileo-SR2-win32');
sub wanted {
    if ( -f $File::Find::name ) {
        if ( $File::Find::name =~ /\.xml$/ ) {
            print "$File::Find::name\n";
        }
    }
}
find( \&wanted, @path );

 

 

 2、自己写代码

 

 

#取出某个目录含子目录的特定文件
#程序:刘兴
#时间:2010.3.19
#blog:http://deepfuture.iteye.com
#QQ:782322192
use 5.010;
use warnings;
use strict;
my $dirs='D:\Boa Constructor';# 初始路径
my $lsfile;
my @filedir;
my %filediryj;#已经访问过的目录 ,目录名=>文件数目
my $flcount;
my $ppfile;#文件匹配符 以正则方式表达的
$ppfile='\.py$'; #文件匹配符 以正则方式表达的 ,这里是*.py
unshift (@filedir,$dirs);
$|=1;
my $filedir;
while ($filedir=shift(@filedir)){
   opendir DH,$filedir or die "不能打开$filedir"; #打开目录
   say "=======================================";
   next if exists $filediryj{$filedir};#如果目录已经访问过了就不再访问
   $flcount=0;
   foreach $lsfile(readdir DH){#读取目录
      next if $lsfile=~m/^\./;
      $lsfile="$filedir\\$lsfile";
      if ( -d $lsfile){
         unshift (@filedir,$lsfile);
      }
      elsif ($lsfile=~m/$ppfile/i) {
         $flcount++;
         say $lsfile;#匹配到的文件名
      }
  }
  close DH;
  $filediryj{$filedir}=$flcount;#目录下共有多少个文件,使用哈希
  say "目录$filedir下共$flcount个匹配文件";
}
say "=======================================";
say "查询结果统计";
#访问哈希列表
$flcount=0;
my $key;
my $value;
while (($key,$value)=each %filediryj){
  say "$key目录文件数目:$value";
  $flcount+=$value;
}
say "共有$flcount个文件匹配";


转自:

http://deepfuture.iteye.com/blog/619998

相关文章
|
7月前
|
Linux
`grep`命令搜索当前目录及其子目录下的所有文件
`grep`命令搜索当前目录及其子目录下的所有文件
3092 1
|
Linux
Linux查找多个文件、排除某类文件、匹配文件多处内容
Linux查找多个文件、排除某类文件、匹配文件多处内容
113 0
|
19天前
|
监控 Python
查找指定目录下最近修改的文件
本文介绍了一个使用Python编写的脚本,用于查找指定目录及其子目录中在过去指定秒数内被修改的文件。通过`os`和`time`模块,脚本遍历目录,检查文件的最后修改时间,并列出符合条件的文件。文章还提供了代码优化建议,包括增加日志记录、异常处理和性能优化,使脚本更加健壮和高效。
20 4
|
3月前
|
JSON 安全 API
对目录中的文件进行排序
此Python脚本可通过电子邮件发送带文件附件的邮件。您可自定义发件人邮箱、密码、收件人邮箱、邮件主题与正文。脚本使用Gmail SMTP服务器发送邮件,并将附件编码为base64格式添加至邮件中。出于安全考虑,请使用应用专用密码。
23 7
|
5月前
|
Linux PHP
linux查找指定目录下包含指定字符串文件,包含子目录
linux查找指定目录下包含指定字符串文件,包含子目录
47 1
|
5月前
|
Linux Perl
linux 批量查找并替换文件里的指定字符串,linux 批量查找并替换当前目录下所有子目录内文件里的指定字符串
linux 批量查找并替换文件里的指定字符串,linux 批量查找并替换当前目录下所有子目录内文件里的指定字符串
61 0
|
7月前
|
弹性计算 运维 Shell
|
7月前
|
Shell
grep 搜索当前文件夹下的所有子文件中的文件是否包含8888字符串的命令
要在当前文件夹及其所有子文件夹中的文件中搜索包含字符串 "8888" 的文件,你可以使用 grep 命令结合 -r 或 -R 选项(表示递归搜索)。这里是具体的命令: bash grep -r "8888" . 其中: -r 或 -R:递归搜索。 "8888":你要搜索的字符串。 .:表示当前目录。 这个命令会列出所有包含字符串 "8888" 的文件的名称以及匹配的行。如果你只想看到文件名,而不看具体的匹配行,可以加上 -l 选项: bash grep -rl "8888" . 这样,命令只会输出包含字符串 "8888" 的文件名。
107 1
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
|
Shell Perl
把当前目录(包含子目录)下所有后缀为 “.sh” 的文件后缀变更为 “.shell”,之后删除每个文件的第二行
把当前目录(包含子目录)下所有后缀为 “.sh” 的文件后缀变更为 “.shell”,之后删除每个文件的第二行。
100 1