我构建了一个精心设计的 500 多个字符的命令,其中包含许多参数和开关来自动签署多个 PDF 文档。
我正在使用 JSignPDF,我想使用它的批处理模式,包括当前目录和子目录。
我遇到问题的命令的相关部分是:
java -jar ../jsignpdf-1.4.3/JSignPdf.jar *.pdf -a
...这当然适用于当前目录中的所有 PDF 文件。我怎样才能让它同时获取所有子目录中的所有 .pdf 文件?
我尝试了一些没有用的东西...新手,甚至不值得一提...像 -r 这样的东西(显然不会工作/没有工作)。
我想知道这是一个简单的答案还是需要一些 awk 魔法,如果这有效的话。任何帮助是极大的赞赏。
答案1
使用zsh
或ksh93 -G
,您可以执行以下操作:
java -jar ../jsignpdf-1.4.3/JSignPdf.jar ./**/*.pdf -a
fish
您可以使用or执行相同的操作bash -O globstar
,但请注意,它们可能会在目录树下降时遍历符号链接(在bash
4.3 中部分修复,在 5.0 及更高版本中完全修复)。
否则,如果文件列表不是太大,您可以这样做:
find . -name '*.pdf' -exec sh -c '
exec java -jar ../jsignpdf-1.4.3/JSignPdf.jar "$@" -a' sh {} +
但请注意,find
可能会尝试拆分列表并运行多个sh
命令来尝试克服命令行大小的限制。