Regex 使用grep的精确匹配文件扩展名过滤器

Regex 使用grep的精确匹配文件扩展名过滤器,regex,linux,grep,Regex,Linux,Grep,我正在所有扩展名为JS/JSX/SCALA的文件上运行cat,我尝试了以下方法 git ls-files | grep ".[js|jsx|scala]$" git ls-files | grep ".*js|jsx|scala" 最终结果将是这样的 git ls-files | grep -e ".*[js|jsx|scala]$" | xargs cat | wc -l 但我不断得到更多的文件,如yaml、yml,使用组: gi

我正在所有扩展名为JS/JSX/SCALA的文件上运行cat,我尝试了以下方法

git ls-files | grep ".[js|jsx|scala]$"
git ls-files | grep ".*js|jsx|scala"
最终结果将是这样的

git ls-files | grep -e ".*[js|jsx|scala]$" | xargs cat | wc -l
但我不断得到更多的文件,如yaml、yml,使用组:

git ls-files | grep -E '\.(js|jsx|scala)$'
\(js | jsx | scala)$
模式匹配一个点,然后匹配
js
jsx
scala
,然后匹配字符串的结尾


注意启用POSIX ERE法规遵从性的
-E
选项。

我认为您可以将其缩短为
\(jsx?| scala)$
是的,POSIX ERE也可以,但可读性较差。