使用脚本在linux中组合多个PDF?

使用脚本在linux中组合多个PDF?,linux,scripting,Linux,Scripting,我想从X网站上保存/下载PDF,然后将所有这些PDF合并成一个,这样我就可以很容易地一次看到所有PDF 我所做的 从网站获取PDF文件 wget-r-l1-A.pdf--无父项 将PDF合并为一个 gs-dNOPAUSE-sDEVICE=pdfwrite-sOUTPUTFILE=Combined.date+%F.pdf-dBATCH file1.pdf file2.pdf file3.pdf 我的问题是,我想在一个脚本中自动化整个过程,这样我就不必每天都这样做了。这里每天都会在X中添加新的PDF

我想从X网站上保存/下载PDF,然后将所有这些PDF合并成一个,这样我就可以很容易地一次看到所有PDF

我所做的

  • 从网站获取PDF文件

    wget-r-l1-A.pdf--无父项

  • 将PDF合并为一个

    gs-dNOPAUSE-sDEVICE=pdfwrite-sOUTPUTFILE=Combined.
    date+%F
    .pdf-dBATCH file1.pdf file2.pdf file3.pdf

  • 我的问题是,我想在一个脚本中自动化整个过程,这样我就不必每天都这样做了。这里每天都会在X中添加新的PDF

    那么,我如何在没有给出所有pdf的完整列表的情况下执行上面的步骤2,我尝试在步骤2中执行
    file*.pdf
    ;但它以随机顺序组合了所有PDF

    下一个问题是,*.pdf文件的总数每天都不一样,有时是5个pdf文件,有时是10个…但好在它的命名顺序是file1.pdf file2.pdf

    所以,我需要一些帮助来完成上面的第2步,这样所有pdf都可以按顺序组合,并且我不必明确给出每个pdf的名称

    谢谢

    更新: 这就解决了问题

    pdftk `ls -rt kanti*.pdf` cat output Kanti.pdf
    

    我先下载了file1.pdf,然后下载了file2.pdf等等,所以我就做了ls-rt……只要做ls-t,就把file20.pdf放在开头,把file1.pdf放在最后……

    我以前就用过这种连接,因为pdftk恰好对Debian/Ubuntu可用。

    你可以做一些类似的事情:

    GSCOMMAND="gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Combined_date +%F.pdf -dBATCH"
    FILES=`ls file*.pdf | sort -n -k 1.5`
    
    $GSCOMMAND $FILES
    
    这是假设文件名为“file.pdf”。另见阿尔伯格的文章

    它会对名称中带有空格的文件执行奇怪的操作,因此如果需要能够处理带有空格的名称,则需要添加转义

    我真的很好奇其他人会想出什么,因为在我看来,这似乎是一个快速而肮脏的解决方案,但由于其他人的回答,它变得更好了:)

    编辑


    按照alberge的建议对文件使用数字排序命令。

    我过去也使用过pdftk,效果很好

    要以数字顺序列出文件,可以通过执行以下操作来指示sort忽略文件名的前$n-1个字符:

    ls | sort -n -k 1.$n
    
    因此,如果您有*.pdf文件:

    $ ls | sort -n -k 1.5
    file1.pdf
    file2.pdf
    file3.pdf
    file4.pdf
    file10.pdf
    file11.pdf
    file20.pdf
    file21.pdf
    

    我想按顺序组合PDF;使用*.pdf将其以随机顺序组合…我想按此顺序组合file1.pdf…file9.pdf file10.pdf file11.pdf等等。。。