사용법을 찾으려면 -L을 사용하세요.

사용법을 찾으려면 -L을 사용하세요.

나는 가지고있다

link -> file

그래요

find -L . -name 'link'

그리고 얻다

./link

왜 그런 겁니까?

그 사람은 다음과 같은 사실을 발견했습니다.

-L : 기호 링크를 따릅니다. find가 파일에 대한 정보를 확인하거나 인쇄할 때 사용되는 정보는 링크 자체가 아니라 링크가 가리키는 파일의 속성에서 얻어야 합니다(깨진 심볼릭 링크이거나 find가 링크가 가리키는 파일을 확인할 수 없는 경우 제외). ) .

답변1

일반적인 규칙은 명령이 링크(즉, 디렉토리 항목, inode에 대한 포인터)에서 작동하는 경우 해당 명령은 기호 링크를 링크가 가리키는 객체가 아니라 그 자체로 취급한다는 것입니다. 그렇지 않으면 명령은 기호 링크가 가리키는 대상에서 작동합니다. 따라서 cp기본적으로 심볼릭 링크를 따르며 링크가 가리키는 파일의 내용이 복사됩니다. 그러나 cp를 지정하여 처리할 디렉터리 항목을 요청하면 -R심볼릭 링크 따라가기가 중지됩니다. mv항상 디렉토리 항목과 함께 작동하므로 심볼릭 링크를 따르지 않습니다.

find명령의 일반적인 활동은 디렉토리 항목에 대해 작동하는 것이므로 기본적으로 기호 링크를 따르지 않습니다. 모든 속성에 대한 심볼릭 링크를 추적하는 -L이유 추가find와는 별개로디렉토리 검색을 할 때 빼놓을 수 없는 것 중 하나가 바로 이름이다. 의 목적 중 하나는 디렉토리 항목에서 작동하는 및 같은 명령에 대한 입력을 제공하는 find -name것입니다 . 생성된 이름이 루트로 추정되는 디렉터리 트리 외부를 가리키는 경우 불쾌하고 놀라운 결과가 발생합니다 .mvrmfind -L dir -namedir

답변2

-L확인하는 데 사용하세요특성링크의 콘텐츠나 메타데이터가 아닌 파일의 콘텐츠나 메타데이터입니다. 예를 들어 다음을 사용하면 링크가 아닌 파일을 -atime확인합니다 .atime

$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$

testdir/link이후에 생성되었지만 testdir/ref가리키는 파일은 그렇지 않습니다.

관련 정보