2016-09-25 137 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 
相關問題