使 (`ocrmypdf`) 命令在终端中运行并在输出名称中包含输入名称

使 (`ocrmypdf`) 命令在终端中运行并在输出名称中包含输入名称

我在 Dolphin 服务菜单文件中有这一行,其中包含许多其他用于 PDF 处理的命令:

Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf";'

它的优点是提供 形式的输出文件MY_PDF_ocr.pdf,从而保留输入文件的名称。但我更愿意在终端 ( konsole) 中运行该命令,以便我看到该进程。

为此,我可以使用以下行:

Exec=konsole --noclose -e ocrmypdf "%u" ocr_en.pdf

但输出不保留输入的名称。

一行像

Exec=konsole --noclose -e ocrmypdf "%u" "${%u}_ocr.pdf"

什么也没做。

如何调整ocrmypdf以便命令在 konsole 中运行并且输出包含输入的名称?

答案1

经过几次尝试(和错误)后,像这样的简单命令ocrmypdf %u %u_ocr.pdf将给出一个具有奇怪名称(包括扩展名)的表单的输出文件INPUT.pdf_ocr.pdf,并在服务菜单中:

Exec=konsole --noclose -e ocrmypdf %u %u_ocr.pdf

但是一个更干净的解决方案(受到我可以从中选择的启发这里(关于脚本的正确格式)和这里bash在终端中使用此类脚本)似乎是为该ocr_EN.shOCR 命令创建一个单独的脚本(例如 ) - 形式(对于英语):

#!/bin/sh
for f in "$@"
do
ocrmypdf "$f" "${f%.pdf}_ocr_EN.pdf"
done

使其可执行,然后使用以下命令(此处包含在服务菜单文件的行中):

konsole --noclose -e bash /PATH/TO/ocr_EN.sh %f

它给出了一个名为的输出INPUT_ocr_EN.pdf(扩展名不出现两次)。

相关内容