如何统计Git Diff中仅为.js后缀(排除.test.js)的文件数量?
统计Git Diff中纯.js后缀文件的数量
嘿,这个需求我刚好处理过!要过滤掉.test.js、.spec.js这类带额外后缀的文件,只统计纯.js结尾的文件,咱们可以借助Git的路径否定匹配规则来实现,再结合统计命令就能轻松得到数量。
方案1:通用排除所有非纯.js的文件
这个方法会排除所有文件名包含多个点的.js文件(比如x.test.js、y.spec.js),只保留app.js、utils.js这种纯.js后缀的文件:
git diff --name-only -- '*.js' '!*.*.js' | wc -l
方案2:只排除特定后缀(比如.test.js)
如果你只想排除.test.js,其他类似.spec.js的文件需要保留,可以把否定规则改成针对特定后缀:
git diff --name-only -- '*.js' '!*.test.js' | wc -l
命令各部分说明:
--name-only:只输出变更的文件名,而非完整的diff内容,方便后续统计行数'*.js':匹配所有以.js结尾的文件'!*.*.js':Git的否定匹配规则,排除文件名里包含另一个点的.js文件(也就是非纯后缀的)| wc -l:通过管道将前面的输出传给wc命令,统计行数(对应文件的数量)
⚠️ 注意:一定要用单引号包裹路径模式,避免你的shell提前解析通配符,确保Git能正确处理这些匹配规则。
内容的提问来源于stack exchange,提问作者Hommer Smith
相关产品推荐
相关产品推荐

