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
ループを実行するためにコマンド置換を使用しています。この出力は(この場合はファイルリスト)に置き換えられます$(...)
。代わりに改行を避ける方法として...
使用します。printf
echo