두 디렉터리 트리가 겹치는지 테스트

두 디렉터리 트리가 겹치는지 테스트

$foosum을 $bar두 개의 절대 디렉터리 이름(output으로)으로 설정합니다 realpath. 어느 깊이에서든 하나가 다른 하나에 포함되어 있는지 테스트하고 그에 따라 명령을 실행하고 싶습니다.

를 사용할 것 같지만 find종료 상태는 무언가가 발견되었는지 여부에 대해 많은 것을 말해주지 않습니다. 그래서 저는 여기 있습니다:

if [ x$(find -H "$foo" -path "$bar" -printf y -quit) == xy \
    -o x$(find -H "$bar" -path "$foo" -printf y -quit) == xy ] ; then
    ...
fi

맞아? 더 간단한 것이 있나요?

컨텍스트: 내 홈 디렉터리에는 암호화된 폴더(ecryptfs)가 포함되어 있습니다. 매개변수를 클라우드에 동기화하는 스크립트를 작성 중입니다. 해독된 파일을 동기화하고 싶지 않으므로 동기화하기 전에 ecryptfs를 제거하기 위해 매개변수가 암호화된 폴더와 겹치는지 테스트하겠습니다.

답변1

질문과 맥락을 완전히 이해했는지 잘 모르겠습니다. 하지만 어쩌면 이것이 효과가 있을 수도 있습니다:

foo="$(realpath "...")"
bar="$(realpath "...")"

if [[ $foo = $bar/* || $bar = $foo/* ]]; then
    echo "Overlap"
fi

한 트리가 다른 트리에 심볼릭 링크되어 있으면 이 방법은 작동하지 않습니다.

관련 정보