주어진 파일 / 디렉토리에 대한 모든 심볼릭 링크를 찾는 방법은 무엇입니까?


7

주어진 파일 / 디렉토리에 대한 모든 심볼릭 링크를 어떻게 찾을 수 있습니까?

이 이전 질문 은 하드 링크에만 적용됩니다 (정확하게 읽으면).

답변:


5

사용하십시오 find /dir -lname /link/target. 쉘 패턴으로 링크 컨텐츠를 검색합니다. 예를 들어 *와?를 사용할 수 있습니다. 대상 스펙의 와일드 카드.

이 방법의 한 가지 단점은 확장 경로가 아닌 링크의 내용 을 검색 하므로 절대 경로에 대한 상대 링크를 찾아야하는 경우 (예 : 이름이 같은 파일이 둘 이상인 경우)보다 복잡한 스크립트가 필요합니다.

또한 다른 접근 방식을 사용할 수 있습니다 find -L /dir -samefile /link/target. 이로 인해 find심볼릭 링크를 역 참조 하고 OS에 의해 확장 된 역 참조 된 경로가 제공된 것과 동일한 지 확인한 후 상대 링크와 절대 링크가 모두 Linux에 의해 처리됩니다. 이것은 이전 방법의 문제를 해결합니다.


busybox find로이 작업을 수행 할 수 있습니까? -samefile또는 이없는 것 같습니다 -lname.
g.rocket

@ g.rocket 더 어려워요. 찾고있는 링크로 find ... -exec sh -c 'stat -c %N | egrep '-> yourlink$'바꾸고 yourlink와 같은 것을 사용해야 합니다. 또한 훨씬 느립니다.
whitequark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.