我正在尝试编写一个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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。