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/dir
find
그러나 이 경우 더 나은 옵션이 있습니다.
find -H some/dir
-H
ls
일부 POSIX 유틸리티( , cp
, ...) 에서 지원하는 옵션으로 chmod
유틸리티가 인수로 전달된 심볼릭 링크(단지 -L
/ 와 혼동 하지 말 것 -follow
)를 따르도록 지시합니다. 이로 인해 find
다음이 발생합니다.모든심볼릭 링크, 인수로 전달된 심볼릭 링크, 디렉터리 탐색 중에 발견된 심볼릭 링크).
이것은 여전히 실제로 디렉토리가 아닌 것과 기능적으로 동일하지 않습니다 find some/dir/
. some/dir
이 경우에는 find some/dir/
실패합니다.디렉토리가 아님오류에는 find -H some/dir
디렉터리가 아닌 파일도 나열됩니다.