4

私はBashを初めて使用するので、これは些細なことかもしれませんが、理解できません。ファイル名内のスペースをエスケープしようとしています。見てください。これは「実際の例」であることに注意してください。空白ページを含むファイルをインターリーブする方が簡単かもしれませんが、スペースについてここにいます。

#! /bin/sh

first=true
i=combined.pdf
o=combined2.pdf
for f in test/*.pdf
do
    if $first; then
        first=false
        ifile=\"$f\"
    else
        ifile=$i\ \"$f\"
    fi
    pdftk $ifile blank.pdf cat output $o
    t=$i
    i=$o
    o=$t
    break
done

my file.pdf(スペースを含む)というファイルがあるとします。pdftk がそれを2combined.pdf "my file.pdf"つのファイル引数として使用できるように、ifile 変数に文字列を含める必要があります。combined.pdfmy file.pdf

さまざまなエスケープ方法を試しましたが(最初に引用符自体をエスケープするかどうかなど)、pdftkを実行するmyと分割され続けます。file.pdf

編集:明確にするために:1つの変数で複数のファイル名を(複数の引数として)pdftkコマンドに渡そうとしています。2 つのファイル名の違いを認識したいのですが、スペースで 1 つのファイル名を引き裂かないでください。

4

2 に答える 2

0

試す:

find test/*.pdf | xargs -I % pdftk % cat output all.pdf

他の回答に関するコメントで述べたxargsように、これを行う最も効率的な方法です。

編集:空白ページが必要だとは思いませんでしたが、find上記をいくつかのコマンドにパイプして空白ページを挿入できると思います(リスト->文字列結合に似ています)。FP に近いので、私はこの方法を好みます。

于 2013-10-01T18:11:38.033 に答える