Shell
傳遞目前和子目錄中特定文件類型的所有文件
我建構了一個精心設計的 500 多個字元的命令,其中包含許多參數和開關來自動簽署多個 PDF 文件。
我正在使用 JSignPDF,我想使用它的批處理模式,包括目前目錄和子目錄。
我遇到問題的命令的相關部分是:
java -jar ../jsignpdf-1.4.3/JSignPdf.jar *.pdf -a
…這當然適用於目前目錄中的所有 PDF 文件。我怎樣才能讓它同時拾取所有子目錄中的所有 .pdf 文件?
我嘗試了一些沒有用的東西……新手,甚至不值得一提……像 -r 之類的東西(顯然會 - /沒有 - 不起作用)。
我想知道這是一個簡單的答案還是需要一些 awk 魔法,如果這甚至是有效的。任何幫助是極大的讚賞。
使用
zsh
orksh93 -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
命令來嘗試克服命令行大小的限制。