현재 폴더에 두 개의 파일이 있습니다.
SubmitWeb.mSubmit.m
다음은 find
이 두 파일을 표시하지 않습니다.
find . -regex .*submit\(Web\)?\.m
그러나 위의 정규식은 emacs 버퍼에서 잘 작동합니다. 즉, .을 사용하여 샘플 문자열에 대한 emacs 버퍼를 검색합니다 isearch-forward-regexp
.
기본값 regextype
은 입니다 find
.emacs
find
하지만 파일 이름에 여는 괄호 로 처리되는 것 같은데 \(
, 이는 emacs 정규식 구문과 다릅니다.
이것이 버그입니까, 아니면 find
매뉴얼 페이지를 오해하고 있습니까?
답변1
문제는 \(
애초에 쉘에 의해 해석되는 것 같습니다.
예를 들어 다음과 같은 디렉터리가 있습니다.
foo(.test
그 다음에
ls foo\(.text
그리고
ls "foo(.text"
둘 다 유효합니다.
따라서 다음이 작동합니다.
find . -regex ".*submit\(Web\)?\.m"
편집하다:
작은 따옴표도 여기에서 작동합니다.
작은따옴표와 큰따옴표의 차이점은 다음 문서를 참조하세요.Bash의 작은 따옴표와 큰 따옴표