이 명령을 시도했지만 '{}' '{}'
... 제가 원하는 것은 후자인 것 같습니다 InputXYZ.pdf OutputXYZ.pdf
(중복 파일은 필요하지 않으며 읽기 쉽도록 이전 파일을 교체하고 싶습니다).
$ find . -name "*.pdf" -ok qpdf --password=passMe --decrypt '{}' '{}' \;
다른 프로그램에서 이러한 반복적인 입력 문제를 처리할 수 있는 더 좋고 간단한 아이디어가 있다면 주저하지 말고 의견이나 답변을 남겨주세요. 사실 선생님은 너무 다양한 비밀번호를 사용하셔서 문서를 읽는 것이 매우 혼란스럽습니다. 어쩌면 일부 파일에는 비밀번호가 포함되어 있고 find
모든 가능성을 테스트하기 위해 -cmd만 포함되어 있을 수도 있습니다.
답변1
입력 파일을 출력 파일과 동일하게 만들 수는 없습니다. 기껏해야 qpdf
불평만 하고 아무것도 하지 않는 것뿐입니다. 최악의 경우 출력 파일을 0바이트로 자르고 입력 파일이 비어 있다고 불평합니다. 따라서 다음을 사용하십시오.
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