2017-05-18 114 views
-1

我閱讀了很多關於如何遍歷目錄的子文件夾的答案,但是我看到所有這些答案僅用於循環一個級別或2個級別。是否有可能遍歷文件夾的所有子目錄?考慮一個目錄,比如說dir1。在dir1中有dir2和dir3。在dir2中有dir4,在dir3中有dir5。在dir4中有dir6和dir7,在dir5中有dir8和dir9等,讓我們考慮「無限子文件夾」。有沒有什麼方法可以遍歷dir1的所有級別?遍歷路徑的所有子文件夾

+0

與代碼交談。 –

+0

是的,這是可能的。 –

+0

如果你不想寫一個腳本,你可以使用「查找」。像這樣:find。 -maxdepth 3 -mindepth 1。你可以定義你的maxdepth –

回答

0

使用一個遞歸函數

function run_path { 
    # by default current dir 
    local current=${1:-.} 
    local subdir 
    # removing trailing/if any 
    current=${current%/} 
    # do something 
    echo "$current" 
    for subdir in "$current"/*/; do 
     # filtering non-existing file for example '*' not expanded 
     [[ ! -e $subdir ]] && continue; 
     # recursive call 
     run_path "$subdir" 
    done 
} 

run_path "<<path_to_run>>" 

另一個版本包括「隱藏」的文件夾(其與開始。) 在這種情況下。和...必須排除 也不處理符號鏈接,可能會被排除以避免循環。

function run_path { 
    # by default current dir 
    local current=${1:-.} 
    local subdir 
    # removing trailing/if any 
    current=${current%/} 
    # do something 
    echo "$current" 
    for subdir in "$current"/*/ "$current"/.*/; do 
     # filtering non-existing file for example '*' not expanded 
     [[ ! -e $subdir || $subdir = */../ || $subdir = */./ ]] && continue;   
     # recursive call 
     run_path "$subdir" 
    done 
}