bash - 用 xargs grep 一些东西并找到

标签 bash shell grep find

bash guru ;) 我正在尝试改进 bash 中的一些字符串,这些字符串在特定文件中匹配 grep 特定关键字。看起来像这样:

find /<path>/hp -iname '*.ppd' -print0 | xargs -0 grep "\*ModelName\:"

这对我来说工作得非常快!比这个快 20 倍:

find /<path>/hp -iname '*.ppd' -print0 | xargs -0 -I {} bash -c 'grep "\*ModelName\:" {}'

但问题是在第一个脚本中我得到以下几行:

/<path>/hp/hp-laserjet_m9040_mfp-ps.ppd:*ModelName: "HP LaserJet M9040 M9050 MFP"

但想要的结果只是

*ModelName: "HP LaserJet M9040 M9050 MFP"  

(如第二个脚本)。我怎样才能实现它?

P.S.:我使用 find 是为了脚本的灵 active 和 future 的改进。

最佳答案

无需查找:

grep -rh --include "*.ppd" "\*ModelName\:"

关于bash - 用 xargs grep 一些东西并找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003207/

相关文章:

linux - 如何在unix中获取数字记录和文件大小

linux - 一个单词一个单词地搜索整行

linux - grep : get matching string before certain string

bash 脚本每 60 秒捕获一次平均负载 2 小时

regex - 使用grep获取两个特定单词/字符之间的字符串的模式

bash - 尝试在Linux系统上安装hadoop,在编辑.bashrc文件时出错

java - 使用 crontab 中的 java 文件执行 bash 文件

bash - 断流10秒后如何自动重启

bash - 如何在 bash 中读取文件 * 和 * stdin

linux - 计算日志文件中单词 [error] 和 [notice] 的出现次数