使用 gpg 命令并使用通配符搜索文件时可以保留部分文件名吗?

使用 gpg 命令并使用通配符搜索文件时可以保留部分文件名吗?

选择带有通配符的文件时,如何在 gpg 命令中保留部分文件名?

文件名每天/每月更改一次,但我需要命令保持静态。

加密前:

FILENAME.1234
FILENAME.9876

加密后:

FILENAME.1234.pgp
FILENAME.9876.pgp

到目前为止的命令:

 gpg --batch --passphrase-fd 0 --output /usr/tmp/FILENAME*.pgp --encrypt -r "Some Quoted Text" --sign -u UserName /usr/tmp/FILENAME*

这可以从命令行完成吗,还是需要 for 循环?

答案1

gpg不接受多个文件名--output,这就是 shell fileglob 将扩展的内容。因此,您必须“循环”或使用xargs每个文件运行一次命令。

我会使用findandxargs与空分隔符 ( -print0/ -0),因为我习惯编写空白安全文件名操作:

find /usr/tmp -iname 'FILENAME.*' -print0 | xargs -0 -I %  \
    gpg --batch \
    --passphrase-fd 0 --output %.pgp --encrypt \
    -r "Some Quoted Text" --sign -u UserName \
    %

全面披露:还没有测试过 - 为测试设置 gpg 的负担太高 - 但应该很接近。

相关内容