나는 ~였다UNIX와 유사한 시스템 명명 지침을 따르지 않는 디렉토리에서 파일을 찾으려고 시도했습니다..
find 명령과 함께 사용하는 경우find <dir> -regex '.*[^-_./0-9a-zA-Z].*'
관심 있는 파일 반환.
위의 명령줄에 대한 내 질문은 다음과 같습니다.
- 우리에게 필요한 이유모든 문자
.
이전의 메타문자0 이상*
메타문자는 예상대로 작동하기 위해 정규식의 시작과 끝 부분에 배치됩니다. 처음 시도했을 때find <dir> -regex '*[^-_./0-9a-zA-Z]*'
아무 것도 반환되지 않았습니다 . - 또한
character ranges
정규식을POSIX character classes
다른 모든 항목에 해당하는 정규식 으로 바꾸면find <dir> -regex '.*[^-_./[:digit:][:lower:][:upper:]].*'
아무것도 반환하지 않습니다. 왜 이런 일이 발생합니까?
티아!
답변1
*
정규식 구문에서는 다음과 같습니다.수량자이전 정규식 원자(이 경우.
)에 적용됩니다. 이것은아니요쉘 패턴 일치 구문("globbing"이라고도 함)에서와 같이 그 자체는 "0개 이상의 메타 문자"입니다.이는 기본 Emacs 정규식 유형의 특별한 기능일 수 있습니다. 예를 들어 보다 친숙한 동작을 원하면
-regextype posix-basic
또는 를 사용해 보세요.-regextype egrep