ループを使用してbashでpdftkパラメータを生成する

ループを使用してbashでpdftkパラメータを生成する

kにn = 1を含むファイル名のリストを生成し、最後に "cat出力xyz.pdf"文字列を追加し、結果をパラメータとして渡すには、次のように実行する必要がありますpdftk

pdftk file1.pdf file2.pdf file3.pdf cat output xyz.pdf

CLIでこれを直接自動化するにはどうすればよいですか?

答え1

質問タグに示すようにbashを使用している場合は、ループは必要ありません。支柱の拡張

前任者。 k = 32の場合

pdftk file{1..32}.pdf cat output xyz.pdf

ファイル数が以下の場合非常に規模が大きい場合、このアプローチは限られている可能性がありますARG_MAX(「引数リストが長すぎます」エラーが発生しました)。

答え2

次のようなものがあなたが望むものかもしれません。

#!/bin/bash

filelist=""

for i in {1..5}; do
    filelist+="file${i}.pdf "
done

pkftk ${filelist} cat output xyz.pdf

ループは1..kで始まり、"file1.pdf ... filek.pdf"を含む文字列を作成します。ループが完了したら、pdftk質問で指定した「cat出力xyz.pdf」と一緒にファイルのリストを渡します。

行が必要な場合は、上記の内容を次のように圧縮できます(ここで想定k=5)。

pdftk $(for i in {1..5}; do printf "%s " file$i.pdf; done) cat output.xyz.pdf

ロジックは同じですが、forループを実行するためにコマンド置換を使用しています。この出力は(この場合はファイルリスト)に置き換えられます$(...)。代わりに改行を避ける方法として...使用します。printfecho

関連情報