• 使用File::Find::Rule模块来遍历文件系统


    use File::Find::Rule;
    my @files_or_dirs = File::Find::Rule->in('.');

    包含当前目录及所有子目录的所有文件和目录。

    如果我们只想找文件而不关心目录,可以再加上file():

    my @files= File::Find::Rule->file()->in('.');

    如果我们只想找出名字结尾是.pl的文件

    my @perl_files= File::Find::Rule->file()->name('*.pl')->in('.');

    File::Find::Rule 也支持迭代器的接口,这对于筛选结果多的情况非常有益处

    my $ffr = File::Find::Rule->file()->name('*.pl')->start('.');
    while(my $file = $ffr->match){
      #做一些进一步的处理
    }

    模块可以构建非常复杂的过滤方法链。例如:

    use File::Find::Rule ;
    @intetresting =
       File::Find::Rule
          ->file()
          ->executeable()
         ->size('<1M')
         ->uid(6588,6070)
         ->name('*.pl')
         ->in('.');

    虽然默认的链接拼接方式是逻辑与,其实还允许你用or或者any()来完成“这样或那样”的搜索。

    grep()方法能够帮你打开文件,检查内容,而且它也有一个过滤方法。

  • 相关阅读:
    linux创建用户
    Java理解笔记------杂项
    java高效并发
    GPG备份秘钥
    (二)数据同步利器syncthing
    (一)安装samba
    (序)利旧打造私有云
    mysql的docker化安装
    (八)netty的SSL renegotiation攻击漏洞
    (七)json序列化
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2966373.html
Copyright © 2020-2023  润新知