주어진 파일 / 디렉토리에 대한 모든 심볼릭 링크를 어떻게 찾을 수 있습니까?
이 이전 질문 은 하드 링크에만 적용됩니다 (정확하게 읽으면).
주어진 파일 / 디렉토리에 대한 모든 심볼릭 링크를 어떻게 찾을 수 있습니까?
이 이전 질문 은 하드 링크에만 적용됩니다 (정확하게 읽으면).
답변:
사용하십시오 find /dir -lname /link/target
. 쉘 패턴으로 링크 컨텐츠를 검색합니다. 예를 들어 *와?를 사용할 수 있습니다. 대상 스펙의 와일드 카드.
이 방법의 한 가지 단점은 확장 경로가 아닌 링크의 내용 을 검색 하므로 절대 경로에 대한 상대 링크를 찾아야하는 경우 (예 : 이름이 같은 파일이 둘 이상인 경우)보다 복잡한 스크립트가 필요합니다.
또한 다른 접근 방식을 사용할 수 있습니다 find -L /dir -samefile /link/target
. 이로 인해 find
심볼릭 링크를 역 참조 하고 OS에 의해 확장 된 역 참조 된 경로가 제공된 것과 동일한 지 확인한 후 상대 링크와 절대 링크가 모두 Linux에 의해 처리됩니다. 이것은 이전 방법의 문제를 해결합니다.
find ... -exec sh -c 'stat -c %N | egrep '-> yourlink$'
바꾸고 yourlink
와 같은 것을 사용해야 합니다. 또한 훨씬 느립니다.
-samefile
또는 이없는 것 같습니다-lname
.