"find -H" 명령과 "find -L" 명령의 차이점은 무엇입니까?

"find -H" 명령과 "find -L" 명령의 차이점은 무엇입니까?

명령을 실행하면 두 명령 모두 동일한 출력을 제공합니다. 파일에 대한 소프트 링크와 하드 링크를 만들었지만 여전히 두 명령 모두 동일한 출력을 제공합니다. find -H와 사이에 차이가 있나요 find -L?

답변1

find하드 링크는 -links. 심볼릭 링크파일로매우 유사하게 대우받을 것입니다.

나는 find당신에게 매뉴얼 페이지를 읽어주겠지만, 당신은 이미 그것을 읽었다고 가정하겠습니다. 매뉴얼 페이지는 초보자가 이해하기 어려운 난해한 언어로 작성되었습니다. 예제가 도움이 될 수 있습니다. 이 작업을 수행:

$ mkdir dir1 dir2 dir3

$ touch dir1/file1 dir2/file2 dir3/file3

$ ln -s dir2 two

$ cd dir1

$ ln -s ../dir3 three

$ cd ..

$ ls -lR                                # I have deleted my user name from the below.
.:
total 1
drwxr-xr-x 1           0 Sep  4 13:08 dir1
drwxr-xr-x 1           0 Sep  4 13:08 dir2
drwxr-xr-x 1           0 Sep  4 13:08 dir3
lrwxrwxrwx 1           4 Sep  4 13:08 two -> dir2

./dir1:
total 1
-rw-r--r-- 1           0 Sep  4 13:08 file1
lrwxrwxrwx 1           7 Sep  4 13:08 three -> ../dir3

./dir2:
total 0
-rw-r--r-- 1           0 Sep  4 13:08 file2

./dir3:
total 0
-rw-r--r-- 1           0 Sep  4 13:08 file3

$ find dir1 two
dir1
dir1/file1
dir1/three
two

$ find -P dir1 two                      # This is the default; i.e., same as the above.
dir1
dir1/file1
dir1/three
two

$ find -H dir1 two
dir1
dir1/file1
dir1/three
two
two/file2

$ find -L dir1 two
dir1
dir1/file1
dir1/three
dir1/three/file3
two
two/file2

알아채다:

  • 기본 동작(즉, -P동작) 에서는 find어떤 기호 링크도 따르지 않습니다.  two(최상위 디렉토리에 있음) dir1/three 단순히 객체로 보고됩니다.
  • 아래에는 -H심볼릭 링크 two→가 지정되어 있으므로(즉, 에 위치함을 알 수 있음)dir2file2dir2two~에 find 명령줄. dir1/three여전히 개체로 보고됩니다 .
  • 아래에는 -L두 기호 링크가 모두 이어집니다.  →  링크를 file2따랐기 때문에 알 수 있습니다 . → 링크를 따랐기 때문 입니다  .twodir2file3dir1/three../dir3

지금까지 명확하지 않다면 (기본값 대신 ) find내 예제에서 명령을 실행해보고 목록이 표시되는 방법과 방법에 특별한 주의를 기울이십시오. 심볼릭 링크가 보입니다.-ls-printtwothree파일로 다양한 옵션에 따라 다양한 보고서도 있습니다.

또 다른 예는 다음과 같습니다.

$ ln -s /bin/sh mysh

$ find . -size +9

$ find -H . -size +9

$ find -L . -size +9
./mysh

심볼릭 링크 ./mysh는 작습니다. 을 가리키는데 /bin/sh, 이것은 꽤 큰 파일입니다. 로 테스트한 결과 -sizeunder(기본값) 및 ./myshunder는 더 작은 것으로 처리되지만 under는 더 큰 것으로 처리됩니다. 왜냐하면 "링크가 가리키는 파일 보기"를 의미하기 때문입니다.-P-H-L-L


다른 예시:

  • find . -type f(및 find -H . -type f)은 일반 파일만 찾습니다.
  • find . "(" -type f -o -type l ")"일반 파일과 (모든) 심볼릭 링크가 발견됩니다.
  • find -L . -type f일반 파일과 심볼릭 링크가 발견됩니다.일반 파일을 가리킵니다.. (또한 디렉토리 트리에 디렉토리에 대한 심볼릭 링크가 포함되어 있는 경우 그것들디렉토리도 검색됩니다. )

관련 정보