find에서 이중 슬래시를 표시해도 괜찮나요?

find에서 이중 슬래시를 표시해도 괜찮나요?

find ./path/here/내가 얻을 때 이것은 버그입니까 ?

./path/here//foo
./path/here//bar

후행 슬래시 없이 경로를 지정하기를 원한다는 것을 알고 있지만 find탭 완성으로 인해 남겨진 경로를 확실히 감지하고 그에 따라 출력을 조정할 수 있습니다. 이것을하지 않을 이유가 있습니까?

답변1

기술적으로 이것은 오류입니다.POSIX 상태저것

계층 구조에서 발견되는 다른 파일에 대한 모든 경로 이름은 현재 경로 피연산자 <슬래시>의 연결로 구성됩니다.현재 경로 피연산자가 1로 끝나지 않는 경우및 경로 피연산자를 기준으로 한 파일 이름

하지만이중 슬래시는 아무런 차이가 없습니다, 따라서 ./path/here//foo./path/here/foo는 항상 동일한 파일입니다. (일부 Unix 변형에서 이중 슬래시가 경로 시작 부분에 있으면 차이가 있습니다. 그렇다면 find해당 사례를 특별히 처리해야 합니다.)

답변2

참고로 find some/dir/대신 사용할 수 있는 이유 중 하나는 실제로 디렉토리에 대한 심볼릭 링크이고 실제로 심볼릭 링크가 가리키는 디렉토리에서 파일을 찾고자 하는 경우 find some/dir입니다 .some/dirfind

그러나 이 경우 더 나은 옵션이 있습니다.

find -H some/dir

-Hls일부 POSIX 유틸리티( , cp, ...) 에서 지원하는 옵션으로 chmod유틸리티가 인수로 전달된 심볼릭 링크(단지 -L/ 와 혼동 하지 말 것 -follow)를 따르도록 지시합니다. 이로 인해 find다음이 발생합니다.모든심볼릭 링크, 인수로 전달된 심볼릭 링크, 디렉터리 탐색 중에 발견된 심볼릭 링크).

이것은 여전히 ​​실제로 디렉토리가 아닌 것과 기능적으로 동일하지 않습니다 find some/dir/. some/dir이 경우에는 find some/dir/실패합니다.디렉토리가 아님오류에는 find -H some/dir디렉터리가 아닌 파일도 나열됩니다.

관련 정보