파일 이름 일치 패턴의 물음표는 무엇을 의미하나요?

파일 이름 일치 패턴의 물음표는 무엇을 의미하나요?

이 명령의 물음표는 무엇을 의미합니까?

find . –type d –name "?d*" –print

그것 없이 실행해 보았지만 아무런 변화도 느끼지 못했습니다.

답변1

물음표는 파일 이름의 문자 하나와 정확히 일치합니다. 그래서,

find -name "c?t"

catand 는 일치 cot하지만 coator 는 일치하지 않습니다 ct.

가치가 있는 것은 매우 일반적인 파일 이름 일치 규칙이며 다양한 명령줄 인터페이스 컨텍스트, 심지어 Windows의 cmd.

일치하는 항목이 없으면 물음표를 제거하면 차이가 발생합니다.

답변2

"?d*"in의 패턴은 find . -type d -name "?d*" -print쉘이 아닌 find(depquid가 올바르게 명시한 대로)에 의해 해석되며 첫 d번째 문자가.

예를 들어, 디렉토리 및 존재하는 경우 .dadfind 명령은 다음을 인쇄합니다 ada.xd

./.dad
./ada
./xd

그리고 쉘 명령 echo ?d*(?d* 패턴이 쉘에 의해 해석되는 경우)은 최소한 인쇄됩니다(패턴과 일치하는 모든 파일의 이름이 있습니다).

ada xd

반면에 두 번째 문자가 있는 디렉토리가 존재하지 않으면 dfind는 출력을 생성하지 않습니다.

?d*

답변3

물음표는 쉘에서 단일 문자로 인식됩니다. 이 경우 이름은 이름이 두 번째 문자 "d"이고 그 뒤에 다른 문자가 오는 디렉터리로 지정됩니다.

find-name 사양과 일치하는 디렉터리 이름이 없기 때문에 아무것도 출력되지 않습니다.

답변4

find . -name '?*.*'"some (one) thing" 다음 "anything" "dot" "anything"과 일치합니다.

노트:

  1. "찾기" 검색 모드입니다.아니요정규 표현식이 아닌 bash glob 확장입니다.
  2. "아무것도"에는 "아무것도"가 포함될 수 있습니다.

따라서 위의 내용은 모든 name.extension 및 .name.extension과 일치하지만 이름이 없는 ".extension"(또는 확장자가 없는 이름)은 일치하지 않습니다.

질문의 "?d*" 패턴은 "d"가 뒤에 오는 단일 문자로 시작하는 모든 이름과 일치합니다.

관련 정보