주어진 디렉토리 내의 파일 / 디렉토리를 가리키는 모든 심볼릭 링크를 찾는 방법


15

이 질문에 또는 이 일에 당신이 (현실을 부르 자 특정 디렉토리를 가리키는 심볼릭 링크를 찾는 방법에 대한 솔루션을 얻을 것이다 (예를 들어) /dir1나는 가능한 모든 파일 / 폴더 내부를 가리키는 기호 링크로 관심 동안) /dir1.

이러한 디렉토리를 삭제하고 싶지만 다른 디렉토리 (호출하자 /dir2)에서와 같이 내부 디렉토리를 가리키는 심볼릭 링크가있을 수 있습니다 /dir1.

또한 절대 또는 상대 경로를 사용하여 이러한 심볼릭 링크를 만들었을 수 있습니다. 내 유일한 도움은 확인하려는 심볼릭 링크가 마운트 된 파일 시스템에 있다는 것을 알고 있다는 것입니다 /dir2.

답변:


15

다음을 사용하여 모든 심볼릭 링크를 찾을 수 있습니다.

find / -type l 

디스크의 모든 위치에 도달하기 위해 루트로 실행할 수 있습니다.

readlink -f링크의 전체 경로를 얻기 위해 다음을 사용하여 확장 할 수 있으며 grep삭제하려는 대상 디렉토리에 대해 출력 할 수 있어야합니다 .

find / -type l -exec readlink -f {} + | grep -F /dir2

대상 디렉토리를 가리키는 find / -type l -printf '%l\n'상대 링크를 얻을 때 사용 이 작동하지 않지만 ../tmp/xyz완전히 확장되지 않았기 때문에 일치하지 않습니다.


1
하위 트리의 경우 심볼릭 링크를 따르는 것이 유용 할 수 있습니다.find -L /subtree -xtype l -exec readlink -f {} +
ruvim

3

필자의 경우 허용 된 답변이 유용하지 않았습니다 (링크 소스를 출력하지 않았기 때문에). 여기 나를 위해 일한 것이 있습니다.

두 가지 -exec조항을 사용하여 해결했습니다 .

find /home/ -type l -exec readlink -nf {} ';' -exec echo " -> {}" ';' | grep "/dir2"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.