find return 이지만 ..이 아닌 이유는 무엇입니까?

find return 이지만 ..이 아닌 이유는 무엇입니까?

다음 경로의 빈 디렉터리로 이동한다고 가정해 보겠습니다./home/user/dir

내가 실행하면 find . ! -name "*.txt"결과는 다음과 같습니다.

.

하지만 실행하면 find /home/user/dir ! -name "*.txt"아무런 결과도 얻지 못합니다.

find가 이런 식으로 동작하는 이유는 무엇입니까? 어디에 명시되어 있나요?

그리고 ..그것을 포함시키면 어떨까요?

답변1

Find는 디렉토리 트리 검색 중에 발견된 .항목을 인쇄해서는 안 됩니다.... 어쨌든 그들은 쓸모가 없습니다. 처음부터 넣으면 .정말 인쇄가 됩니다.

이것찾다유틸리티는 다음에 의해 지정된 각 파일에서 디렉토리 계층 구조를 반복적으로 내려야 합니다., [...] 계층 구조에서 발견되는 다른 파일에 대한 모든 경로 이름은 현재 경로 피연산자 a(현재 경로 피연산자가 1로 끝나지 않는 경우) 및 경로 피연산자를 기준으로 한 파일 이름의 연결로 구성됩니다. .관련 섹션에는 점 또는 점-점 구성 요소가 포함되어서는 안 됩니다., 후행 <slash> 문자가 없고 경로 이름 구성 요소 사이에 단일 <slash> 문자만 있습니다.

find ./foo를 사용하여 유사한 경로 이름을 찾을 수 있습니다 . 여기서 는 현재 경로 피연산자가 되고 중간에 추가되며 상대 부분이 됩니다../foo/bar/hello.txt./foo/bar/hello.txt

find /home/user/dir ! -name "*.txt"최소한 no match /home/user/dir로 인쇄되어야 합니다 . (물론 이름이 로 끝나지 않는 다른 파일도 인쇄해야 합니다 .) 부정을 사용하지 않으면 조건 과 일치하지 않으므로 인쇄되지 않습니다.dir*.txt.txtfind /home/user/dir -name "*.txt"/home/user/dir

관련 정보