在 thunar 自定义操作中转义 %d for pdfseparate

在 thunar 自定义操作中转义 %d for pdfseparate

我想创建一个 thunar 自定义操作,让我右键单击 PDF,然后选择“拆分 PDF”将其拆分为单独的页面。执行此操作的命令是:

$ pdfseparate mypdf.pdf mypdf-%d.pdf

它将为每个页面创建一个新的 PDF,称为mypdf-1.pdfmypdf-2.pdf等,%d并由 pdfseparate 命令替换,并根据手册页使用页码:

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作为所选文件 any%d与文件所在的目录进行插值。因此,如果我尝试复制上述命令,替换mypdf.pdf%n,它看起来像这样:

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

但是,thunar 会将 替换%d为文件的目录。我怎样才能逃脱这样%d它就会被pdfseparate逐字传递?

pdfseparate似乎没有选择使用不同的变量,%d但它确实表示它接受“任何尊重 printf 格式的变体”。我不确定这意味着什么......我尝试过%s但没有成功。

答案1

在类似 printf 的工具中,您通常可以使用%%for 文字%。例如,在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"

相关内容