管道grep输出到xargs

管道grep输出到xargs,grep,xargs,Grep,Xargs,我正在尝试过滤一些报告命令的gitls文件的输出,然后通过管道将该输出传输到xargs。我最初是在gitls文件上使用-z,效果很好,但现在我正在使用grep,我需要恢复该功能 尝试grep版本-Z对实际输出没有任何影响 git ls-files | grep -Z -e={\*.js,\*.html} grep的-Z选项似乎只适用于包含匹配内容的文件名,而不是匹配行的内容。这对我来说似乎很奇怪,但它似乎就是这样工作的 不过,您实际上不需要grep(您不需要原始版本中的*,也不需要添加任何有价

我正在尝试过滤一些报告命令的
gitls文件的输出,然后通过管道将该输出传输到
xargs
。我最初是在
gitls文件上使用
-z
,效果很好,但现在我正在使用grep,我需要恢复该功能

尝试grep版本
-Z
对实际输出没有任何影响

git ls-files | grep -Z -e={\*.js,\*.html}

grep的
-Z
选项似乎只适用于包含匹配内容的文件名,而不是匹配行的内容。这对我来说似乎很奇怪,但它似乎就是这样工作的

不过,您实际上不需要
grep
(您不需要原始版本中的
*
,也不需要添加任何有价值的内容)

git ls文件
采用与文件名匹配的模式

所以你想在这里使用这个命令

git ls-files -z -- '*.js' '*.html'

同意,我觉得它特别提到文件名很奇怪。不过,这解决了问题-我一直在查看ls文件文档,希望文件模式有一个特定的参数。尽管如此,我确实知道ls文件不能排除在repo中跟踪的文件-在我的情况下,排除列表中具体包含的文件可能更容易。我想我没有遵循排除注释<代码>ls文件
可以显示未跟踪的文件。它只能显示被忽略的文件。它还具有排除模式支持。但它仅排除未跟踪的文件,如果文件已在repo中跟踪,
--exclude
参数不适用。我写这些命令是为了快速计算作者写的行数。我最初只想排除二进制文件列表,而不是特定于白名单的文件-但我认为这两种方法实际上都同样冗长,所以这不是问题。啊,没错,排除只针对未跟踪的文件