QPDF:通过通配符限定符反转要附加的文件的顺序

QPDF:通过通配符限定符反转要附加的文件的顺序

上下文:16.04

举例qpdf来说:

# To merge (concatenate) all the pages of a list of PDF files and save the result as a new PDF:
qpdf --empty --pages <file1.pdf> <file2.pdf> <file3.pdf> -- <output.pdf>

需要将特定目录中的一组 .pdf 文件(文件名中有空格)连接起来:

# Concatenate Drafts file to ../concatDrafts.pdf   (76 pdf files)
# https://stackoverflow.com/a/53754681/4953146
qpdf --empty --pages *.pdf -- out.pdf

虽然qpdf命令是连接 .pdf 文件,要以 .pdf 文件的逆序进行连接。在 UNIX 中,要处理的文件顺序返回如下:

ls -r.pdf

是否有一个 BASH 等效的通配符zsh 语句?:

qpdf --empty --pages ./*.pdf(On) -- output.pdf

答案1

据我所知,bash 没有这样的限定符。您可以使用外部sort命令,例如,假设 bash 的版本足够新,并且支持以空字符结尾的 mapfile:

mapfile -d '' -t files < <(printf '%s\0' ./*.pdf | sort -zr)

qpdf --empty --pages "${files[@]}" -- output.pdf

请注意,如果您想要反向数字排序,相当于 zsh(nOn)限定符,您需要使用sort -zVr它而不是纯数字,sort -znr因为sort不会查看非数字前缀。

相关内容