2017-05-18 1 views
-1

디렉토리의 하위 폴더를 반복하는 방법에 대한 많은 답변을 읽었지만 모두 한 레벨 또는 두 레벨 아래로 반복하기위한 것입니다. 폴더의 모든 하위 디렉토리를 반복 할 수 있습니까? dir1과 같은 디렉토리를 생각해보십시오. dir1에는 dir2와 dir3이 있습니다. dir2에는 dir4가 있고 dir3에는 dir5가 있습니다. dir4에는 dir6과 dir7이 있고 dir5에는 dir8과 dir9 등이 있으며, "무한 하위 폴더"를 고려할 수 있습니다. dir1의 모든 레벨을 반복 할 수있는 방법이 있습니까?경로의 모든 하위 폴더를 반복합니다.

+0

코드로 대화하십시오. –

+0

예 가능합니다. –

+0

스크립트를 쓰지 않으려면 "찾기"를 사용할 수 있습니다. 이렇게 : 찾기. -maxdepth 3 -mindepth 1. 너는 너의 최대 깊이를 정의 할 수있다 –

답변

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 
} 
관련 문제