J'ai construit une command élaborée de plus de 500 caractères avec de nombreux arguments et des commutateurs pour l'autosigner plusieurs documents PDF.
J'utilise JSignPDF et j'aimerais utiliser son mode batch incluant le directory courant et les sous-directorys.
La partie pertinente de la command que j'ai des problèmes avec est:
java -jar ../jsignpdf-1.4.3/JSignPdf.jar *.pdf -a
… ce qui bien sûr fonctionne très bien pour tous les files PDF dans le directory courant. Comment puis-je le faire afin qu'il ramasse tous les files .pdf dans tous les sous-directorys ainsi?
J'ai essayé quelques choses qui n'ont pas fonctionné … novice et même pas la peine de mentionner … des choses comme -r (évidemment would- / did-not work).
Je me request si c'est une réponse simple ou qui a besoin d'une certaine magie awk, si cela serait même valide. Toute aide est grandement appréciée.
Avec zsh
ou ksh93 -G
, vous pourriez faire:
java -jar ../jsignpdf-1.4.3/JSignPdf.jar ./**/*.pdf -a
Vous pouvez faire la même chose avec fish
ou bash -O globstar
, mais attention, ceux-ci peuvent traverser des liens symboliques lors de la descente de l'arborescence de directorys (corrigé dans bash
4.3).
Sinon, si la list des files n'est pas trop volumineuse, vous pourriez faire:
find . -name '*.pdf' -exec sh -c ' exec java -jar ../jsignpdf-1.4.3/JSignPdf.jar "$@" -a' sh {} +
Mais méfiez-vous de find
peut essayer de split la list et exécuter plusieurs commands sh
pour tenter de dépasser une limite sur la taille de la command line.