Xargs

反轉要處理的pdf文件的順序

  • November 2, 2020

上下文:Catalina = zsh(首選)或 16.04 Ubuntu = bash

一個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

儘管qpdfcommand是連接 .pdf 文件,但要連接 .pdf 文件的相反順序。要處理的文件的順序由以下方式返回:

ls -r.pdf

要處理 .pdf 文件名中的空格: xargs 研究表明需要:

ls -r *.pdf | xargs -E '\n'

將 ls 的輸出通過管道傳輸到命令中的思考過程是什麼qpdf

zsh中,它只是:

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

在哪裡On是glob限定符,用於按ame.o``O``n

您還可以n將該按名稱排序的 glob 限定符添加為數字:

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

相比:

$ print -r ./*.pdf(On)
./file3.pdf ./file2.pdf ./file1.pdf ./file11.pdf ./file10.pdf
$ (LC_ALL=C; print -r ./*.pdf(On))
./file3.pdf ./file2.pdf ./file11.pdf ./file10.pdf ./file1.pdf

(按詞彙順序,在比較字元串時在第一個近似值中忽略標點符號(此處)的語言環境中,file10.pdf出現在 之前file2.pdf,甚至在之前)。file1.pdf``.

和:

$ print -r ./*.pdf(nOn)
./file11.pdf ./file10.pdf ./file3.pdf ./file2.pdf ./file1.pdf

file10.pdf之後是file3.pdf因為 with ,十進制數字序列以數字方式進行比較(這類似於 GNU或 GNUn所做的)。ls -v``sort -V

引用自:https://unix.stackexchange.com/questions/617483