2013-06-24 83 views
0

我嘗試合併幾個以「L」開頭並以「.pdf」結尾的pdf,並在終端上顯示我的mac。 我嘗試以下合併PDF的XARGS gs

find . -name "L*.pdf" | xargs -0 gs -q -dNOPAUSE -dBATCH -SDEVICE=pdfwrite -sOutputFile=patternmerged.pdf 

和我得到的follwing輸出

Error: /undefinedfilename in (./L01_Introduction.pdf\n./L02_Edges, Corners, Superpixels and Blobs.pdf\n./L03_SIFT, SURF, MSER.pdf\n./L04_Texture and Shape.pdf\n./L05_Feature Reduction.pdf\n./L06_Bag of Visual Words.pdf\n./L07_Clustering...) 

Operand stack: 
Execution stack: 
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2  %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 

Dictionary stack: 
--dict:1167/1684(ro)(G)-- --dict:0/20(G)-- --dict:77/200(L)-- 
Current allocation mode is local 
Last OS error: No such file or directory 
GPL Ghostscript 9.06: Unrecoverable error, exit code 1 

有人可以幫忙嗎?

回答

0

當使用xargs的-0參數時,它期望輸入參數(文件名)由空字符分隔,而不是由換行符分隔。

要得到上面的例子中工作,發現可能與-print0選項一起使用:

find . -name "L*.pdf" -print0 | xargs -0 -t gs -q -dNOPAUSE -dBATCH -SDEVICE=pdfwrite -sOutputFile=patternmerged.pdf 

或find命令的輸出可以通過tr進行預處理,用空字符替換換行符:

find . -name "L*.pdf" | tr '\n' '\0' |xargs -0 -t gs -q -dNOPAUSE -dBATCH -SDEVICE=pdfwrite -sOutputFile=patternmerged.pdf 

備註: 與-t參數在執行前打印xargs命令。