在否定匹配上打印单行

Print single line on negative match

我正在尝试识别没有匹配我计划的签名或根本没有签名的 rpm 文件。我只想在否定匹配上打印 rpm 的名称。下面的示例和理想输出(本示例中我的签名是 123456):

/a/folder/rpm_valid_signature.rpm:
    Header V4 RSA/SHA1 Signature, key ID 123456: OK
    Header SHA1 digest: OK (blah)
    V4 RSA/SHA1 Signature, key ID 123456: OK
    MD5 digest: OK (blah)
/a/folder/rpm_invalid_signature.rpm:
    Header V4 RSA/SHA1 Signature, key ID 000000: OK
    Header SHA1 digest: OK (blah)
    V4 RSA/SHA1 Signature, key ID 000000: OK
    MD5 digest: OK (blah)
/a/folder/rpm_unsigned_signature.rpm:
    RSA sha1 (MD5) (PGP) md5 NOT OK (MISSING KEYS: PGP#654321)

理想情况下,输出应列出无效匹配项,因此:/a/folder/rpm_invalid_signature.rpm(仅此而已)。我将在查找命令中使用它,并将脚本指向包含大约 2k rpm 文件(未签名或使用无效密钥签名)的文件夹。

希望这是有道理的,感觉就像是 awk 或 sed 的工作,但由于文件中的重复而变得更加复杂。

signature=' key ID 123456:'  # or whatever should match
find /a/folder -type f -name '*.rpm' -exec grep -L "$signature" '{}' +