find
일을 흥미진진하게 만드는 큰 일 중 하나
내가 이렇게 하면:
find -path *ncf
아니면 이거:
find -path ncf*
아무런 결과도 얻지 못하지만 결과가 나온다면:
find -path *ncf.js
일치하는 파일을 얻었습니다. 왜 그런 겁니까? 이것은 찾을 수 있는 독특한 것입니까, 아니면 더 큰 것입니까? 이 편지를 쓴 사람의 집 주소를 아는 사람이 있나요 find
?
답변1
여기에는 두 가지 문제가 있습니다.
그렇지
*
않으면 쉘에서 처리됩니다(있는 경우 현재 디렉토리의 파일과 일치).find -path \*ncf.js
또는
find -path '*ncf.js'
나타나는 동작은 와일드카드 표현식이 파일과 일치한다는 사실에서 비롯됩니다.길확장 기능을 포함한 완전한 콘텐츠. (
-name
확장자가 여전히 포함된 파일 이름을 일치시키는 데 사용됩니다.) 이는 구체적이지 않습니다.find
파일이 포함된 디렉터리에서 시도해 보세요.ls
.
모든 버전에서 find
기본값으로 사용하는 것은 아니지만 시작 디렉터리를 지정하는 습관을 들여야 합니다 .
답변2
다른 답변에서는 설명되지 않았기 때문에 추가하겠습니다.
find -path "*ncf"
find -path "*ncf.js"
위의 내용은 동일하지 않습니다(참고: 쉘이 확장되는 것을 방지하기 위해 glob을 따옴표로 묶었습니다). 그 이유는 하나는 로 끝나고, ncf
다른 하나는 로 끝나기 때문입니다 ncf.js
. 이것이 혼란스럽다면 파일 확장자 개념을 포기해야 합니다. 유닉스에는 그런 기능이 없습니다. 점은 단지 문자일 뿐이며 다르게 취급되지 않습니다(첫 번째 문자인 경우에는 숨겨져 있으며 디렉토리 목록에 나타나지 않을 수 있습니다).