유효한 디렉토리에 대한 모든 심볼릭 링크를 나열하려면 find를 사용하십시오.

유효한 디렉토리에 대한 모든 심볼릭 링크를 나열하려면 find를 사용하십시오.

나는 사용할 수 있다

find /search/location -type l

내부의 모든 심볼릭 링크 나열/검색/위치.

유효한 디렉터리를 참조하는 심볼릭 링크 로 출력을 제한 find하고 깨진 심볼릭 링크와 파일 링크를 제외하려면 어떻게 해야 합니까?

답변1

GNU find 사용(비임베디드 Linux 및 Cygwin에서 구현):

find /search/location -type l -xtype d

기본 기능이 없는 찾기 구현의 경우 -xtype두 개의 호출을 사용할 수 있습니다 find. 하나는 기호 링크를 필터링하고 다른 하나는 디렉토리에 대한 링크를 필터링합니다.

find /search/location -type l -exec sh -c 'find -L "$@" -type d -print' _ {} +

또는 다음과 같이 프로그램을 호출할 수 있습니다 test.

find /search/location -type l -exec test {} \; -print

또는 zsh가 있다면 두 개만 있으면 됩니다.글로벌 예선( @=는 심볼릭 링크이고 -= 다음 한정자는 링크 대상에 적용되며 /=는 디렉토리입니다):

print -lr /search/location/**/*(@-/)

답변2

노력하다:

find /search/location -type l -exec test -e {} \; -print 

에서 man test:

   -e FILE
          FILE exists

당신은 또한 혜택을 누릴 수 있습니다깨진 심볼릭 링크를 찾는 방법에 대한 U&L의 답변;댓글도 꼭 읽어보세요.

편집하다: test -d"FILE이 존재하는지, 디렉터리인지"를 확인하세요.

find /search/location -type l -exec test -d {} \; -print 

답변3

여기 있어요:

for i in $(find /search/location -type l); do 
  test -d $(readlink $i) && echo $i 
done

관련 정보