我认为这可以解决问题:
find src -type f -regextype egrep -regex '.*(?<!\.d)\.ts'
Run Code Online (Sandbox Code Playgroud)
但它似乎没有匹配任何东西。
我认为这应该有效,但我想这种“egrep”风格不支持负反向引用,除非我没有正确地逃避某些事情。
以供参考,
% find src -type f
src/code-frame.d.ts # <-- I want to filter this out
src/foo.ts
src/index.ts
Run Code Online (Sandbox Code Playgroud)
是否有另一种快速方法可以.d.ts从我的搜索结果中过滤掉文件?
% find --version
find (GNU findutils) 4.7.0-git
Run Code Online (Sandbox Code Playgroud)
bxm*_*bxm 71
我不相信egrep支持该语法(您的表达式是 Perl 兼容的正则表达式)。但是您不需要在您的示例中使用正则表达式,只需进行多个-name测试并!酌情应用否定:
find src -type f -name '*.ts' ! -name '*.d.ts'
Run Code Online (Sandbox Code Playgroud)
Ste*_*itt 29
你可以通过只过滤文件名来得到你想要的结果,否定你不想要的文件的测试:
find src -type f -name \*.ts ! -name \*.d.ts
Run Code Online (Sandbox Code Playgroud)
一种简单(可能效率较低)的方法可以过滤掉不需要的字符串。
find -name "*.ts" | egrep -v "\.d\.ts$"
Run Code Online (Sandbox Code Playgroud)