【发布时间】:2019-05-05 13:56:48
【问题描述】:
我正在尝试编写一个脚本以递归地进入目录结构以查找*.sm 和*.ssc 文件。但是,我的脚本会跳过名称以点开头的文件夹,例如 .Folder Name。这是在 Windows 上 - 文件夹没有隐藏。
它找到的正确结果的示例:
/mydir/Directory Name/File Name.sm
未找到的文件示例:
/mydir/.Directory Name/.File Name.sm
function findFiles($directory) {
function glob_recursive($directory, &$directories = array()) {
foreach(glob($directory, GLOB_ONLYDIR | GLOB_NOSORT) as $folder) {
$directories[] = $folder;
glob_recursive("{$folder}/*", $directories);
}
}
glob_recursive($directory, $directories);
$files = array ();
foreach($directories as $directory) {
$directory = str_replace(['[',']',"\f[","\f]"], ["\f[","\f]",'[[]','[]]'], $directory);
foreach(glob("{$directory}/*.{sm,ssc}", GLOB_BRACE) as $file) {
$files[] = $file;
}
}
return $files;
}
【问题讨论】:
-
能否请您澄清一下 - 标题为
files and folders whose names start with a dot但问题表明您还希望查找具有sm或ssc文件扩展名的文件。两者都是你想要完成的吗?