現在のディレクトリとサブディレクトリにある特定のファイル形式のすべてのファイルを渡します。

現在のディレクトリとサブディレクトリにある特定のファイル形式のすべてのファイルを渡します。

複数のPDF文書に自動的に署名するために、多くのパラメータとスイッチを含む高度な500文字以上のコマンドを作成しました。

私はJSignPDFを使用しており、現在のディレクトリとサブディレクトリを含むバッチモードを使用したいと思います。

私が問題のあるコマンドの関連部分は次のとおりです。

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

...もちろん、これは現在のディレクトリのすべてのPDFファイルに適用されます。すべてのサブディレクトリにあるすべての.pdfファイルを同時にインポートするにはどうすればよいですか?

私はうまくいかないいくつかの作業を試しました。初心者、言及する価値のない作業... -r(明らかに動作しないか動作しない)などの作業を試みました。

これが簡単な答えであるか、それがうまくいけば、少し奇妙な魔法が必要かどうか疑問に思います。どんな助けでも大変感謝します。

ベストアンサー1

zshまたはを使用して、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

おすすめ記事