使用 xargs 链接命令

使用 xargs 链接命令

我试图用 bash 实现以下结果:

  1. grep某些子字符串的文件。
  2. 获取这些文件的文件名(可以包含空格)并打印它们。
  3. 打印每个文件名后,我想再次 grep ,但是这次仅在该文件内。

所以结果看起来像这样:

/tmp/file1.txt
it works!
/tmp/file2.txt
/tmp/file3.txt
it works!

我尝试构建这样的命令:

grep -irl "something" . | xargs -I % sh -c 'echo "%"; cat "%" | grep -i "another thing" "%"'

说明:grep -l返回文件名。然后我打印这些文件名echo "%",然后我想在文件内进行 grep 。

但没有运气。这里有什么教训?

澄清一下:我的实际问题/目标是找到包含字符串 A 但也不包含字符串 B 的所有文件。

更多说明:我想要类似的东西,但我也grep A | grep -v B想要匹配的所有文件的列表。A

答案1

这里有什么教训?

大概不要给布丁加太多鸡蛋

%
>  grep -l -r -- "$patternA" 。 |
>  三通 /dev/fd/7 |
>  xargs grep -L --“$patternB”
>) 7>&1

相关内容