使用php在目录中搜索文件

时间:2010-10-09 06:17:13

标签: php file search

如何使用php

列出文件夹及其子文件夹中的所有文件

4 个答案:

答案 0 :(得分:6)

您可以使用SPL迭代器。特别是RecursiveDirectoryIterator将以递归方式遍历给定的目录结构。

像这样:

$realpath = realpath('/path/to/file');


$fileObjects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($realpath),
                 RecursiveIteratorIterator::SELF_FIRST);

foreach($fileObjects as $key => $object){
    if($object->getFilename() === 'filename.png') {
        echo $object->getPathname();
    }
}

SELF_FIRST迭代模式基本上告诉迭代器父项是第一个放置的(父项是第一个)。

答案 1 :(得分:0)

您是在谈论以自己的程序或Web应用程序运行的php脚本。你为什么要这么做?

echo shell_exec('find -name *');

但是你真的可以在shell中运行它。

如果您希望运行此Web应用程序,www-data将需要运行该脚本的权限,让它执行此操作非常不安全。相反,您可以让具有相应权限的用户登录并执行此操作。不太安全。

答案 2 :(得分:0)

您可以编写脚本以使用数组中的php scandir获取文件夹(和子文件夹)中的所有文件。然后,您可以搜索该数组以查找特定文件。

示例:

<?php
    $dir    = '/tmp';
    $files = scandir($dir);
    print_r($files); 
?>

输出如下内容:

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)

答案 3 :(得分:0)

如果您希望能够为所有txt文件指定掩码或某些东西,例如* .txt,那么没有比“glob”更好的功能了:)