Как найти читаемые папки на Linux

Я пытаюсь найти все читаемые каталоги и подкаталоги на сервере Linux с помощью команды оболочки, я пробовал эту командную строку:

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

но эта командная строка показывает мне только читаемые папки в (/) каталоги, а не подкаталоги тоже.

Я хочу сделать это с помощью PHP или командной строки

благодарю вас

1 ответ

Решение

"но эта командная строка показывает мне только читаемые папки в ( /) каталогах, а не подкаталоги тоже"

Когда вы установите -maxdepth 1 вы ограничиваете команду поиска /home только, удалите его, чтобы позволить find искать рекурсивно.

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";
    }
}
Другие вопросы по тегам