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

前端之家收集整理的这篇文章主要介绍了bash – linux命令合并带有数字排序的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.

原文链接:https://www.f2er.com/bash/385229.html

猜你在找的Bash相关文章