find
은 필요하지 않습니다. 이와 유사한 뭔가 (하지만 공백이나 일부 특수 문자와 디렉토리 이름을 보장하지.) :
if [ "$dir1" == "$dir2" ]; then
echo "$dir1 == $dir2";
exit;
fi
if grep -E -q "^$dir2" <<< $dir1; then
echo "$dir1 is contained by $dir2."
exit
fi
if grep -E -q "^$dir1" <<< $dir2; then
echo "$dir2 is contained by $dir1.";
fi
그러나,이 기호 링크를 처리하지 않습니다. 예를 들어, sym1 -> /usr/local/bin
및 sym2 -> /usr/local
, 분명히 sym2
은 sym1
을 포함합니다.
또한,이 /usr/bin
--- 업데이트 --- DevSolar과 동일 /usr/local/bin
, 또는 /usr/local/../bin
,과 동일 /usr/local/./bin
처럼, 이상한 찾고 디렉토리 이름을 처리하지 않습니다 심볼릭 링크를 해결하기 위해 readlink -e
을 사용할 수 있습니다. 내 테스트에서는 이상한 디렉토리 이름을 .
및 ..
같은 이름으로 해결합니다. DevSolar 덕분에.
디렉토리가 존재하는지 확인하는 것은'[[-d dirname]]'일 것입니다. 당신이 쓴 ('find -type d') 것은 * "directory"타입의 모든 아이템을 찾는다. * 당신은 여전히 결과를 확인해야한다. – DevSolar
하나의 디렉토리에 다른 디렉토리가 있는지 어떻게 확인합니까? – chillax786
이름 만 파싱하는 것을 고려하고 있습니까, 아니면 심볼릭 링크를 고려하고 싶습니까? 부분 경로에 기호 링크가 있으면 어렵습니다. (여전히 가능해야합니다.) –