选择带有通配符的文件时,如何在 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
每个文件运行一次命令。
我会使用find
andxargs
与空分隔符 ( -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 的负担太高 - 但应该很接近。