上下文: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
不会查看非数字前缀。