내 디렉토리에 js 및 css 파일이 많이 있습니다. 그 중 일부는 내용의 md5()를 기반으로 이름이 지정되었습니다 f10521a21bb013cb81e0909809818ad6.js
. 이 파일을 일치시키기 위해 find를 사용하고 싶습니다. 0개의 결과가 반환되는 이유는 무엇입니까?
find -regex "^[A-f0-9]{32}\.(?:js|css)$"
답변1
- 정규식은 파일 이름뿐 아니라 경로와도 일치하므로 문자열 시작 부분에 고정하지 마세요.
- 기본 emacs 유형 정규식은 간격을 좋아하지 않는 것 같습니다. 다른 것을 선택하세요.
- 다른 정규식 유형 중 어느 것도 비캡처 그룹을 좋아하지 않는 것 같습니다.
GNU를 사용한다고 가정하면 다음이 작동합니다 find
.
find . -regextype posix-awk -regex ".*/[a-f0-9]{32}\.(js|css)$"
find . -regextype posix-basic -regex ".*/[a-f0-9]\{32\}\.\(js\|css\)$"
find . -regextype posix-egrep -regex ".*/[a-f0-9]{32}\.(js|css)$"
find . -regextype posix-extended -regex "/[a-f0-9]{32}\.(js|css)$"