Shell

傳遞目前和子目錄中特定文件類型的所有文件

  • June 23, 2019

我建構了一個精心設計的 500 多個字元的命令,其中包含許多參數和開關來自動簽署多個 PDF 文件。

我正在使用 JSignPDF,我想使用它的批處理模式,包括目前目錄和子目錄。

我遇到問題的命令的相關部分是:

java -jar ../jsignpdf-1.4.3/JSignPdf.jar *.pdf -a

…這當然適用於目前目錄中的所有 PDF 文件。我怎樣才能讓它同時拾取所有子目錄中的所有 .pdf 文件?

我嘗試了一些沒有用的東西……新手,甚至不值得一提……像 -r 之類的東西(顯然會 - /沒有 - 不起作用)。

我想知道這是一個簡單的答案還是需要一些 awk 魔法,如果這甚至是有效的。任何幫助是極大的讚賞。

使用zshor ksh93 -G,您可以執行以下操作:

java -jar ../jsignpdf-1.4.3/JSignPdf.jar ./**/*.pdf -a

你可以用fishor做同樣的事情bash -O globstar,但要注意,當下降目錄樹時,它們可能會遍歷符號連結(在bash4.3 中部分修復,在 5.0 及更高版本中完全修復)。

否則,如果文件列表不是太大,你可以這樣做:

find . -name '*.pdf' -exec sh -c '
 exec java -jar ../jsignpdf-1.4.3/JSignPdf.jar "$@" -a' sh {} +

但請注意find,可能會嘗試拆分列表並執行多個sh命令來嘗試克服命令行大小的限制。

引用自:https://unix.stackexchange.com/questions/63167