'.ts'는 찾았지만 '.d.ts'는 찾을 수 없습니다.

'.ts'는 찾았지만 '.d.ts'는 찾을 수 없습니다.

나는 이것이 트릭을 수행할 것이라고 생각합니다.

find src -type f -regextype egrep -regex '.*(?<!\.d)\.ts'

하지만 아무것도 일치하지 않는 것 같습니다.

제 생각에는저것작동해야 하지만 이 "egrep" 스타일은 올바르게 이스케이프 처리하지 않는 한 부정적인 역참조를 지원하지 않는 것 같습니다.

참고로,

 % find src -type f
src/code-frame.d.ts # <-- I want to filter this out
src/foo.ts
src/index.ts

.d.ts검색 결과에서 파일을 필터링하는 또 다른 빠른 방법이 있습니까?

 % find --version
find (GNU findutils) 4.7.0-git

답변1

구문이 지원되지 않는 것 같습니다 egrep(귀하의 표현식은 Perl 호환 정규 표현식입니다). 그러나 예제에서는 정규식을 사용할 필요가 없으며 여러 -name테스트를 수행하고 !필요에 따라 부정을 적용하면 됩니다.

find src -type f -name '*.ts' ! -name '*.d.ts'

답변2

파일 이름만 필터링하고 원하지 않는 파일에 대한 테스트를 무효화하여 원하는 결과를 얻을 수 있습니다.

find src -type f -name \*.ts ! -name \*.d.ts

답변3

원치 않는 문자열을 필터링하는 간단한(아마도 덜 효율적인) 방법입니다.

find -name "*.ts" | egrep -v "\.d\.ts$"

관련 정보