加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – linux命令合并带有数字排序的pdf文件

发布时间:2020-12-15 18:27:02 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个bash脚本,将目录的所有pdf文件合并为一个单独的pdf文件.命令pdfunite * .pdf output.pdf成功实现了这一点,但它按正常顺序合并输入文档: 次数1.pdf 10.pdf 11.pdf 2.pdf 3.PDF 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 虽然我希望文档以数字
我正在尝试编写一个bash脚本,将目录的所有pdf文件合并为一个单独的pdf文件.命令pdfunite * .pdf output.pdf成功实现了这一点,但它按正常顺序合并输入文档:

次数1.pdf
10.pdf
11.pdf
2.pdf
3.PDF
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf

虽然我希望文档以数字顺序合并:

次数1.pdf
2.pdf
3.PDF
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
10.pdf
11.pdf

我想混合ls -v或sort -n和pdfunite的命令会起作用,但我不知道如何组合它们.
关于如何将pdf文件与数字排序合并的任何想法?

非常感谢您的帮助

你可以使用$()嵌入命令的结果,
所以你可以做到以下
$pdfunite $(ls -v *.pdf) output.pdf

要么

$pdfunite $(ls *.pdf | sort -n) output.pdf

但请注意,当filename包含特殊字符(如空格)时,这不起作用.

在这种情况下,您可以执行以下操作:

ls -v *.txt | bash -c 'IFS=$'"'"'n'"'"' read -d "" -ra x;pdfunite "${x[@]}" output.pdf'

虽然看起来有点复杂,但它只是组合而已

> Bash: Read tab-separated file line into array
> build argument lists containing whitespace
> How to escape single-quotes within single-quoted strings?

请注意,您不能使用xargs,因为pdfunite需要输入pdf作为参数的中间部分.我避免使用readarray,因为旧的bash版本不支持它,但你可以使用它而不是IFS = .. read -ra ..如果你有更新的bash.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读