확장명이 지정되지 않으면 find -path가 파일과 일치하지 않습니다.

확장명이 지정되지 않으면 find -path가 파일과 일치하지 않습니다.

find일을 흥미진진하게 만드는 큰 일 중 하나

내가 이렇게 하면:

find -path *ncf

아니면 이거:

find -path ncf*

아무런 결과도 얻지 못하지만 결과가 나온다면:

find -path *ncf.js

일치하는 파일을 얻었습니다. 왜 그런 겁니까? 이것은 찾을 수 있는 독특한 것입니까, 아니면 더 큰 것입니까? 이 편지를 쓴 사람의 집 주소를 아는 사람이 있나요 find?

답변1

여기에는 두 가지 문제가 있습니다.

  1. 그렇지 *않으면 쉘에서 처리됩니다(있는 경우 현재 디렉토리의 파일과 일치).

    find -path \*ncf.js
    

    또는

    find -path '*ncf.js'
    
  2. 나타나는 동작은 와일드카드 표현식이 파일과 일치한다는 사실에서 비롯됩니다.확장 기능을 포함한 완전한 콘텐츠. ( -name확장자가 여전히 포함된 파일 이름을 일치시키는 데 사용됩니다.) 이는 구체적이지 않습니다. find파일이 포함된 디렉터리에서 시도해 보세요.ls

.모든 버전에서 find기본값으로 사용하는 것은 아니지만 시작 디렉터리를 지정하는 습관을 들여야 합니다 .

답변2

다른 답변에서는 설명되지 않았기 때문에 추가하겠습니다.

find -path "*ncf"
find -path "*ncf.js"

위의 내용은 동일하지 않습니다(참고: 쉘이 확장되는 것을 방지하기 위해 glob을 따옴표로 묶었습니다). 그 이유는 하나는 로 끝나고, ncf다른 하나는 로 끝나기 때문입니다 ncf.js. 이것이 혼란스럽다면 파일 확장자 개념을 포기해야 합니다. 유닉스에는 그런 기능이 없습니다. 점은 단지 문자일 뿐이며 다르게 취급되지 않습니다(첫 번째 문자인 경우에는 숨겨져 있으며 디렉토리 목록에 나타나지 않을 수 있습니다).

관련 정보