2013-06-24 3 views
0

Я пытаюсь объединить несколько PDF-файлов, начиная с «L» и заканчивая «.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 

или вывод команды находят может быть предварительно обработаны tr, заменяя символ новой строки нулевой символ:

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

Примечание: с параметром -t команда xargs печатается перед выполнением.