심볼릭 링크 :이 파일에 링크 된 모든 파일 찾기


115

안녕하세요, 저는이 작업을 리눅스에서해야합니다.

  • 주어진 : 파일 이름 'foo.txt'
  • 찾기 : 'foo.txt'에 대한 심볼릭 링크 인 모든 파일

어떻게하나요? 감사!


답변:


132

호출되는 특정 파일에 대한 링크를 찾으려고하는 경우 foo.txt,이것이 유일한 좋은 방법입니다.

find -L / -samefile path/to/foo.txt

반면에, 당신은 단지에 대한 링크 찾기 위해 시도하는 경우에 어떤 이름이 될 일 파일 foo.txt, 다음 같은 뭔가를

find / -lname foo.txt

또는

find . -lname \*foo.txt # ignore leading pathname components

문제가 아름답게 해결되었습니다. 답장 한 모든 사람들에게 감사합니다.
lukmac

8
내가 삭제 된 답변에 대해 언급했듯이, 당신은 -xtype l심볼릭 링크 만 찾기 위해 사용할 수 있습니다
Hasturkun

foo.txt를 가리키는 파일이 다른 링크에 의해 가리킬 수 있으므로 반복 할 수 있습니다. 예 : A-> B-> foo.txt, / tmp / C-> B-> foo.txt 등
Olivier Dulac 2013

이름 구성 요소가 링크에 이름이 지정된 상위 디렉토리 인 경우에도 작동 할 수 있습니다. 검색 find . -lname '*foo.dir*'(예 : 일치 file.txt -> ../foo.dir/file.txt)
Yonatan

22

파일의 inode 번호를 찾은 다음 동일한 inode 번호를 가진 모든 파일을 검색합니다.

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

또는의 lname옵션을 시도해보십시오. find예를 들어 상대 심볼릭 링크가있는 경우에는 작동하지 않습니다.a -> ../foo.txt

$ find . -lname /path/to/foo.txt

3
최신 버전의 GNU find를 사용하는 경우 inode를 직접 찾아 볼 필요없이 동일한 효과 -samefile-L위해 with 옵션을 사용할 수도 있습니다
Hasturkun

5
그러나 이것은 동일한 inode 번호를 갖는 다른 파일 시스템에서도 파일을 찾습니다.
DigitalRoss

경우 foo디렉토리, 사용하는 것입니다 ln -di: 한 줄에,find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77

1
이 대답은 틀 렸습니다. 심볼릭 링크에는 대상과 동일한 inode가 없습니다. 이것은 심볼릭 링크 된 폴더 내의 파일에 대해서만 작동합니다. 그러나 이것은 요청 된 것이 아닙니다.
Jules Lamur

4

symlinks깨진 심볼릭 링크를 검색 할 때도 편리한 유틸리티 를 사용하는 것을 선호합니다 . 설치 방법 :

sudo apt install symlinks

현재 폴더 및 하위 폴더의 모든 심볼릭 링크 표시 :

symlinks -rv .
  • -r: 재귀
  • -v: verbose (깨진 심볼뿐만 아니라 모든 심볼릭 링크 표시)

특정 심볼릭 링크를 찾으려면 grep다음을 수행하십시오.

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