获取完整的文件夹树并计算其中的TXT文件

get full folders tree and count txt files inside

提问人:provance 提问时间:1/28/2023 更新时间:1/28/2023 访问量:33

问:

主文件夹是 - 带有子文件夹和文件 - 在各个级别
上,我需要整个文件夹树的列表 - 并计算每个
文件夹中的文件 此代码给出了文件夹,但计数始终是 - 我想,不仅是文件夹名称 - 是必需的,但看不到 -
如何获取它们。
hometxttxt0paths to folders

   function rscan ($dir) {
      $all = array_diff(scandir($dir), [".", ".."]);
      foreach ($all as $ff) {
        if(is_dir($dir . $ff)){
          echo $ff . "\n";  // it works
          $arr = glob($ff . "/*.txt");
          echo count($arr) . "\n";  // always 0
          rscan("$dir$ff/");
        }
      }
    }
     
    rscan("home/");
php glob 扫描目录

评论


答:

0赞 Abbas Ghassemi 1/28/2023 #1

6号线

$arr = glob($ff . "/*.txt");

更改为以下代码:

$arr = glob($dir.$ff . "/*.txt");
0赞 arkascha 1/28/2023 #2

替代实现:

<?php
function glob_recursive($pattern, $flags = 0): Int {
    $files = glob($pattern, $flags);
    $count = count($files);
        
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $count += glob_recursive($dir.'/'.basename($pattern), $flags);
    }
        
    return $count;
}
var_dump(glob_recursive('home/*.txt'));

输出如下所示:

整数(10)