我编写了一个简单的 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
'''
最佳答案
快速解决方案:追加| 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
的更多信息此答案的输出行为- What is the magic separator between filenames in ls output?管道 (
|
) 重定向 ls
输出到 xargs
适用echo
在一行上生成以空格分隔的文件名。阅读更多关于
xargs
在 man page
关于linux - Bash脚本qpdf在1个目录中拆分多个pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68959589/