我想在一个流中解密几个 gpg 加密文件,然后将其传输到另一个命令,而不使用任何临时文件。$ cat foo1.txt.gpg foo2.txt.gpg | gpg -d | wc -l 将仅计算 foo1 的行,不包括 foo2。
--decrypt-files 选项能够解密多个文件,但似乎无法将所有解密的文件通过管道传输到单个标准输出:$ gpg --decrypt-files foo*.txt.gpg | wc -l (将输出 0 )
欢迎任何提示
答案1
我猜你应该在循环中使用多个 gpg 调用:
{ for i in foo1.txt.gpg foo2.txt.gpg; do gpg -d < $i; done; } | wc -l
除非您使用 gpg 代理或类似程序,否则多次 gpg 调用将多次要求您输入密码:
gpg-agent --daemon sh -c \
'{ for i in foo1.txt.gpg foo2.txt.gpg; do gpg -d < $i; done; } | wc -l'