我尝试了这个命令,但我认为'{}' '{}'
.我想要的是后者InputXYZ.pdf OutputXYZ.pdf
(我不需要任何重复文件,我想替换旧文件以使阅读更方便)。
$ find . -name "*.pdf" -ok qpdf --password=passMe --decrypt '{}' '{}' \;
如果您有更好、更简单的想法来处理其他程序中的这种重复的输入问题,请毫不犹豫地发表评论或回答。事实上,我的老师使用许多不同的密码,阅读文档非常混乱。也许,有些文件包含密码,然后只是find
-cmd 测试每种可能性?
答案1
您不能使输入文件与输出文件相同。充其量qpdf
只是抱怨,什么也不做。在最坏的情况下,它会将输出文件截断为零字节,然后抱怨输入文件为空。所以用这个:
find . -name "*.pdf" -ok qpdf --password=passMe --decrypt '{}' '{}'.decoded.pdf \;
qpdf
一旦您知道没有以某种意想不到的方式破坏您的文件,您就可以返回并删除重复项。
为了避免每个文件都输入“y”和 RETURN,请使用“yes”命令。 IE
yes | find . -name "*.pdf" -ok qpdf --password=passMe --decrypt '{}' '{}'.decoded.pdf \;
答案2
鉴于@凯尔·琼斯的回答as decrypt_all_files_with()
,你可以将所有内容包装在 for 循环中,
for pass in $(cat passwords.txt)
do decrypt_all_files_with($pass)
done
(但您可能想使用-exec
而不是-ok
,因为它不要求确认)。