我想使用 pdfunite 將多個 pdf 檔案合併到一個輸出檔案中。由於目錄包含許多不同的內容,我想我可以使用 ls/grep 來取得適當的檔案名,然後使用 pdfunite 將其放在一起。 ls/grep 的輸出如下所示:
ls | grep "handout...pdf"
handout01.pdf*
handout02.pdf*
handout03.pdf*
handout04.pdf*
handout05.pdf*
handout06.pdf*
然後我想調用 pdfunit,它具有以下語法:
pdfunite [options] PDF-sourcefile1..PDF-sourcefilen PDF-destfile
我的問題是,我似乎無法將 ls/grep 的輸出透過管道傳輸到 pdfunite 中,因為它不應該像那樣工作。另一方面,如果我嘗試:
pdfunite ls | grep "handout...pdf" grep.pdf
然後 grep 顯然抱怨我選擇的輸出檔:
grep: grep.pdf: No such file or directory
我知道我可以執行兩個單獨的步驟,然後它就會起作用,但我想弄清楚如何用一行來完成此操作。
答案1
如果您的檔案模式那麼簡單,那麼您實際上不需要正規表示式,並且可以使用簡單的通配符:
pdfunite handout??.pdf
否則,您可以使用帶有命令和 -regex 的正規表示式find
,但我找不到執行它的方法,該方法不可能分割成多個檔案組。您可能執行此操作的某些方法也取決於檔案名稱中沒有任何空格。
答案2
我相信,「勾號」字元可以用來做到這一點(蒂爾達上方的東西)。試試這樣的事情:
pdfunite [options] `ls | grep "handout...pdf"`
據我了解,這就是嵌套命令的方式。刻度線內的任何內容都會作為自己的命令執行,並且其輸出會取代刻度線。因此,上面的命令本質上等於
pdfunite [options] handout01.pdf* handout02.pdf* ...
答案3
您不一定需要 grep。您可以將模式傳遞給ls
.
pdfunite $(ls handout*.pdf*) merged.pdf