2016-09-25 127 views
0

这段代码似乎只是替换第一个文件,而不是附加file1.pdf。
我需要该文件附加不替换。循环遍历一个PDF文件的文件夹并向每个文件夹追加一个PDF

#!/bin/bash 
FILES=("/Users/a/folder/"*.pdf) 
for f in "${FILES[@]}" 
do 
    echo "${f}" 
    "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o "${f}" "${f}" "/Users/a/folder2/file1.pdf" 
done 

我注意到,如果我手动运行代码,但对第一个和第二个参数使用不同的名称,它似乎工作。但是,我不知道如何更改第一个参数的名称而不使其成为常量。

回答

1

在我看来,你的问题与Ruby无关。正如我所理解的那样,您正尝试使用MacOS X El Capitan上的命令行将PDF文件与其他PDF文件合并。

如果我正确地理解了您的问题,那么您可能应该听从this weblog的建议并使用从MacOS X Tiger开始提供的命令"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py"

请注意,如果您要追加的文件位于您想追加所有文件的相同目录中,您将遇到以下问题:脚本join.py似乎并不喜欢被赋予相同的文件三次,所以把你的文件放在其他地方(你想追加到所有文件的文件)。

试试沿着线:

#!/bin/bash for f in /Absolute/Path/To/The/PDFS/*.pdf; do /System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py -o $f $f /Absolute/Path/To/The/File/To/Append; done

+0

其实我读了,但它并没有说明如何通过一个文件夹循环。除非我错过了它。 – user2012677

+0

事实上,由于我手边没有Mac来试用,所以我只专注于对我来说似乎最难的事情(即加入PDF)......似乎要循环浏览文件夹中的文件,对于f in *;做 echo $ f; done'应该在MacOS X以及其他UNIX系统上工作,但我无法测试它。 –

+0

试过你的建议,有什么想法?见上面 – user2012677

0

解决方案:

#!/bin/bash 
FILES=("/Users/a/folder/"*.pdf) 
for f in "${FILES[@]}" 
do 
    echo "${f}" 
    a="${f%.pdf}" 
    "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o "${a}_x.pdf" "${f}" "/Users/a/folder2/file1.pdf" 
done 
相关问题