如何在linux上找到可读的文件夹

时间:2016-05-13 23:53:43

标签: php linux shell find readable

我试图使用shell命令在Linux服务器上找到所有可读的目录和子目录, 我试过这个命令行:

find /home -maxdepth 1 -type d -perm -o=r

但是这个命令行只显示(/)目录中的可读文件夹,而不是子目录。

我想使用php或命令行

来做到这一点

谢谢

1 个答案:

答案 0 :(得分:0)

  

" 但是此命令行只显示(/)中的可读文件夹   目录而非子目录 "

当您设置-maxdepth 1时,您只需将查找命令限制为/home将其删除以允许查找递归

find /home -type d -perm -o=r

如果您需要原生php解决方案,则可以使用此glob_recursive函数和is_writable,即:

<?php
function rglob($pattern, $flags = 0) {
    $files = glob($pattern, $flags);
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $files = array_merge($files, rglob($dir.'/'.basename($pattern), $flags));
    }
    return $files;
}

$dirs = rglob('/home/*', GLOB_ONLYDIR);
foreach( $dirs as $dir){
    if(is_writable($dir)){
        echo "$dir is writable.\n";
    }
}