0

我编写了一个简单的 bash 脚本,因为我需要定期将多个 pdf 拆分为 2 个 pdf。我需要每次都以相同的顺序拆分它们(第 1-5 页和第 6 页到最后一页)。我需要对新拆分的 pdf 进行唯一命名,以便将它们分开(即 inv-1.pdf rec-1.pdf;inv-2.pdf rec-2.pdf 等)。我的脚本仅在文件夹中有 5 个以上时才拆分 1 个 pdf。任何建议表示赞赏。

    #!/bin/bash
    for file in $(ls REQ*.pdf)

    do
        qpdf ${file} --pages . 1-5 -- inv-%d.pdf |\
        qpdf ${file} --pages . 6-z -- rec-%d.pdf |\
        echo >> ${file}
    done

'''

4

1 回答 1

0

快速解决方案:附加| xargs echo到您的ls命令。

    #!/bin/bash
    for file in $(ls REQ*.pdf | xargs echo)

    do
        qpdf ${file} --pages . 1-5 -- inv-%d.pdf |\
        qpdf ${file} --pages . 6-z -- rec-%d.pdf |\
        echo >> ${file}
    done

理由:在您的情况下,ls输出是每行一个文件名。您的for循环仅在同一行中获取文件名。其余的被忽略。您可以在此答案中阅读有关ls输出行为的更多信息-ls输出中文件名之间的魔术分隔符是什么?

管道 ( |) 将ls输出重定向到xargs适用echo于在单行上生成以空格分隔的文件名。xargs手册页上阅读更多信息

于 2021-08-28T01:27:26.900 回答