我想创建一个 thunar 自定义操作,让我右键单击 PDF,然后选择“拆分 PDF”将其拆分为单独的页面。执行此操作的命令是:
$ pdfseparate mypdf.pdf mypdf-%d.pdf
它将为每个页面创建一个新的 PDF,称为mypdf-1.pdf
、mypdf-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"