특정 파일에 대해 생성 된 모든 심볼릭 링크를 찾아서 나열하는 방법은 무엇입니까?


52

특정 파일이나 디렉토리의 다양한 경로에 많은 심볼릭 링크를 만들었습니다. 작성된 심볼릭 링크 경로 (위치)의 전체 목록을 원합니다.

예:

~/Pictures많은 디렉토리 에서 디렉토리에 대한 기호 링크를 작성했습니다 . 해당 ~/Pictures디렉토리에 대한 모든 심볼릭 링크를 어떻게 나열 합니까?

가능합니까? 그렇다면 어떻게?


철저한 검색이 필요합니다. 하드 링크와 같이 저장된 수는 없습니다. 찾기를 사용하여 답변 중 하나를 참조하십시오.
ctrl-alt-delor

답변:


42

예를 들면 다음과 같습니다.

find -L /dir/to/start -xtype l -samefile ~/Pictures

또는 더 좋을 수도 있습니다.

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

같은 몇 가지 오류를 제거하기 위해 Permission denied, Too many levels of symbolic links또는 File system loop detected어떤 find올바른 권한이나 다른 상황이없는 경우를 던졌습니다.

  • -L -심볼릭 링크를 따르십시오.

  • -xtype l -파일은 심볼릭 링크입니다

  • -samefile name-파일은와 동일한 inode를 나타냅니다 name. 적용되면 -L심볼릭 링크가 포함될 수 있습니다.

노트:

  • -xtype l숫자 1이 아닌 소문자 L을 사용하십시오 .
  • macOS / Darwin에서는 -xtype입니다 -type.

경로가 포함 된 기호 링크를 찾도록 명령을 수정할 수 있습니까? 예 : ~ / Pictures / A, ~ / Pictures / A / B / C에 링크 될 수있는 시스템 전체 파일 또는 ~ / Pictures>의 하위 디렉토리에있는 파일
snowbound

7

매우 간단한 옵션을 사용하십시오 -lname.

find / -lname /path/to/original/dir

보낸 사람 man find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

참고 : 심볼릭 링크는 원격 시스템 (파일을 공유하는 경우)을 포함하여 어느 곳에 나있을 수 있으므로 모두 찾을 수는 없습니다.


또한 심볼릭 링크가 상대 경로와 같은 ../dir절대 경로를 찾지 못하면 /path/to/original/dir패턴을 사용하고 대신 오 탐지를 제거 할 수 있습니다.-lname \*dir
Jason S

2

이 시도 :

ls -i ~/

277566 Pictures

find . -follow -inum 277566( 아이 노드 번호 가 같은 디렉토리를 찾으십시오 )

모든 심볼릭 링크 경로가 표시됩니다.


4
심볼릭 링크가 아닌 하드 링크를 찾습니다. 하드 링크는 inode 번호를 공유합니다. 심볼릭 링크는 다른 inode 번호를 갖습니다. 심볼릭 링크의 inode에는 차단 목록 대신 경로가 있습니다.
17:14에

질문은 단단하거나 부드러운 상징적 링크를 언급하지 않았다
nux

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