xargs 将什么环境传递给 grep?

xargs 将什么环境传递给 grep?

我正在尝试在文件中搜索两个字符串。这是我正在使用的命令

grep -l -r ads2gas | xargs grep vp8

由于某些原因,第二个 grep 无法正常工作。我收到“没有此文件或目录”错误。

下图显示了一些内容。

a) 文件确实存在于目录中,如 ls 的输出所示 b) 运行带有 -p 参数的 xargs 命令会在执行前显示该命令。看起来不错。c) 错误 :-/ d) 复制粘贴 -p 参数提供的命令实际上有效!?

在此处输入图片描述

对我来说唯一有意义的事情是第二个 grep 命令没有在当前目录中运行。这可能吗?

您能帮我修复这个命令吗,或者给我提供一个更好的方法来递归搜索文件中的两个单词。

谢谢 :)

答案1

我认为您已grep设置为始终对输出进行着色(可能通过别名,或者更糟的是,通过环境变量),并且颜色代码正在驱动第二个grep问题。尝试:

grep --color=none ads2gas | xargs -p grep vp8

与别名相比,设置GREP_OPTIONS='--color=always'更糟糕,因为别名通常不会影响脚本,而这也会影响脚本。我了解到艰难之路

相关内容