小编Chr*_*her的帖子

我如何使用perl以递归方式搜索目录和所有子目录

我用glob 看到了这个链接

这不是我想做的事情.

这是我的计划.为了在目录中搜索与字符串部分匹配的任何文件,将其作为参数提供给我的函数,比如说/home/username/sampledata和字符串data.

我为用户提供了一个选项,在执行时包含一个标志,强制是否检查子目录,当前默认情况下脚本不包含子目录.

包含子目录的伪代码看起来像这样.

我保存文件路径的数组是全局的

  @fpaths;

  foo($dir);

  sub foo{
      get a tmp array of all files

      for ($i=0 ; $i<@tmp ; $i++) {
          next if ( $tmp[$i]is a hidden file and !$hidden) ; #hidden is a flag too

          if($tmp[$i] is file) {
               push (@fpaths, $dir.$tmp[$i]);
          }
          if($tmp[$i] is dir) {
               foo($dir.$tmp[$i]);
          }

       }
   }
Run Code Online (Sandbox Code Playgroud)

看起来很稳固.

我希望实现的是保存完整路径名的每个文件的数组.

我不知道该怎么做的部分是获取每个文件的列表.希望这可以通过glob来完成.

我已经能够使用opendir/ readdir来读取每个文件,如果我知道如何检查结果是文件还是目录,我可以再次执行此操作.

所以我的问题是:

  1. 如何使用glob路径名来获取每个文件/子目录的数组

  2. 如何检查以前找到的数组上的项目是目录还是文件

谢谢大家

perl glob

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

glob ×1

perl ×1