pdfseparateのthunarカスタムジョブから%dをエスケープします。

pdfseparateのthunarカスタムジョブから%dをエスケープします。

PDFを右クリックし、「PDF分割」を選択して別のページに分割できるthunarカスタムタスクを作成したいと思います。これを行うコマンドは次のとおりです。

$ pdfseparate mypdf.pdf mypdf-%d.pdf

などとmypdf-1.pdf呼ばれる各ページに対して新しいPDFを生成し、マニュアルページに従ってページ番号を使用してpdfseparateコマンドに置き換えます。mypdf-2.pdf%d

SYNOPSIS
    pdfseparate [options] PDF-file PDF-page-pattern
PDF-page-pattern should contain %d (or any variant respecting printf format), since %d is replaced by the page number.

Thunar カスタムアクションファイルが配置されているディレクトリを使用して、any%nを選択したファイルに補間します。したがって、上記のコマンドをに置き換え%dてコピーしようとすると、次のようになります。mypdf.pdf%n

pdfseparate "%n" "$(basename "%n" .pdf)-%d.pdf"

ただし、thunarは%dディレクトリをファイルに置き換えます。そのまま配信される%dようにどのように脱出できますかpdfseparate

pdfseparate他の変数を使用するオプションはないようですが、%d「printf形式を尊重するすべてのバリアント」を許可すると述べています。これが何を意味するのかわかりません...試してみましたが、%s成功しませんでした。

答え1

printfなどのツールでは通常、%%for literalを使用できます%。たとえば、printf標準Cライブラリ(参考文献を参照)man 3 printfのマニュアルページには次のものが表示されます。

       %      A '%' is written.  No argument is converted.  The complete conversion specification is '%%'.

したがって、エスケープして%リテラルとして処理するには、thunarに実行したいコマンドを%使用するだけです。%%

pdfseparate %n "$(basename %n .pdf)-%%d.pdf"

関連情報