특정 파일에 대한 모든 하드 링크를 어떻게 찾을 수 있나요? 즉, 하드 링크가 주어지면 동일한 파일에 대한 다른 모든 하드 링크를 찾으시겠습니까?
파일 시스템이 파일에 대한 하드 링크를 추적합니까?
파일의 inode에는 하드링크가 아닌 파일에 대한 하드링크의 개수만 저장됩니다. 그렇죠?
답변1
주어진 파일이 호출되고 /path/to/file
현재 디렉토리 아래에 존재하는 모든 하드 링크를 찾으려면 다음을 사용하십시오.
find . -samefile /path/to/file
위의 내용은 GNU find에서 테스트되었습니다. -samefile
그렇긴 하지만POSIX 아님, 그것은 또한 지원합니다맥 OSX 찾기그리고FreeBSD 찾기.
문서
GNU에서 man find
:
-samefile name
파일은 name과 동일한 inode를 참조합니다. -L이 적용되면 여기에는 기호 링크가 포함될 수 있습니다.
찾기와 ls의 차이점
ls -l
파일이나 디렉터리에 대한 하드 링크 수를 나열합니다. 디렉토리의 경우 이 숫자는 표시된 결과 수보다 큽니다 find . -samefile
. 그 이유는GNU 찾기 매뉴얼:
디렉토리에는 일반적으로 상위 디렉토리에 지정된 항목과
.
디렉토리 내의 항목이라는 두 개 이상의 하드 링크가 있습니다. 디렉토리에 하위 디렉토리가 있는 경우 각 하위 디렉토리에는..
상위 디렉토리에 대한 하드 링크가 있습니다.find 명령줄에 언급되지 않는 한
.
디렉토리 항목은 일반적으로 검색되지 않습니다...
ls -l
요약 하면 .
및 ..
디렉토리는 별도의 하드 링크로 간주되지만 find . -samefile
그렇지 않습니다.