私はこのコマンドを試しましたが'{}' '{}'
...私が望むものは後者のようです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」コマンドを使用してください。つまり
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