2015-02-05 6 views
2

주어진 디렉토리에 쉘의 다른 디렉토리가 있는지 어떻게 확인합니까? 2 개의 전체 경로 디렉토리를 전달하려고합니다. (나는 이것이 어리 석다는 것을 알지만, 단지 학습 목적을 위해). 그런 다음 그 두 경로 중 하나가 다른 경로에 포함되어 있는지 확인하고 싶습니다.디렉토리에 다른 디렉토리가 있는지 확인하십시오.

parent=$1 
child=$2 

if [ -d $child ]; then 
    echo "YES" 
else 
    echo "NO" 
fi 

그러나 이것은 상위 디렉토리를 사용하지 않습니다. 자식이 있는지 검사 만합니다.

+0

어떤 레벨에서'$ parent'가'$ child'의 부모인지 확인하고 싶습니까? 이것은 문자열 접두사 검사입니다 (당신이 symlinks,'../'게임들에 대해 걱정하지 않는다고 가정 할 때). –

+0

'find -type d -name "$ child"'를 사용하십시오. – Barmar

답변

2

당신은 하나의 이름이 다른 포함되어 있는지 find를 사용할 수 있습니다

result=$(find "$parent" -type d -name "$child") 
if [[ -n $result ]] 
then echo YES 
else echo NO 
fi 
0

당신은 순수 bash는이 작업을 수행 할 수 있습니다. $ 1에있는 모든 파일을 반복하고 "$ 1/$ 2"가 dir인지 확인하십시오 :

parent=$1 
child=$(basename $2) 
if [ -d $parent ] && [ -d $child ]; then 
    for child in $parent; do 
     if [ -d "$parent/$child" ]; then 
      echo "Yes" 
     else 
      echo "No" 
     fi 
    done 
fi 
+0

이것이 작동하지 않는 이유는 두 번째 if 문에서 상위 경로에 전체 자식 경로를 추가하기 때문입니다. 존재하지 않는 디렉토리가 생기고 항상 NO가됩니다. –

+0

@Kanny Bros, 절대 경로가 아닌'$ child' 폴더 이름 만 원한다면'child = $ (basename $ 2)'를 사용하십시오. – MeetTitan

관련 문제