2016-05-13 60 views
0

即時試圖找到使用shell命令Linux服務器上的所有可讀的目錄和subdurectories, 我已經試過此命令行:如何找到在Linux上讀取文件夾

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

,但這個命令行告訴我只是可讀(/)目錄中的文件夾,而不是子目錄。

我想這樣做,使用PHP或命令行

謝謝

+2

如果你想子目錄,只是刪除'-maxdepth 1' –

+0

好主意我找到應用此命令行時的目錄列表,但是當我想要訪問或閱讀此導演時,它告訴我(無法打開此文件夾!) 其他想法做到這一點與PHP腳本像跳躍或類似的東西 – walidz

+0

它是一個好主意,以標記答案是正確的,而不是張貼評論作爲答案 - >〜http://stackoverflow.com/a/372​​20868/797495。我可能想刪除這些「答案」,否則你會得到downvoted;) –

回答

0

但這個命令行告訴我剛剛在(/) 目錄中讀取文件夾,而不是子目錄太

當您設置-maxdepth 1時,您將find命令限制爲/home只,刪除它允許找到搜索遞歸

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

如果你需要一個本地php解決方案,您可以使用此功能glob_recursiveis_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"; 
    } 
} 
+0

是的先生謝謝 – walidz

相關問題