我下面有一个脚本,我遇到了问题。我有几个包含PostScript文件的文件夹,我想批量转换为PDF。我之前在linux上做过很少的脚本,但我认为这很接近。虽然我想要它并不是很有效。有什么建议吗?或者发现我犯的错误?我希望文件在转换后保留在同一位置。目前,这会转换文件,但它们会全部放在一个文件夹中。
我这样调用脚本:./ all.ps.to.pdf“/ directory / to / process”
#!/bin/sh
STARTDIR=$1
if [ ! -d "$STARTDIR" ]; then
echo No starting directory $STARTDIR
exit 1
fi
find $STARTDIR -name '*.ps' -print | sed -e 's/.ps$//' |
xargs -l -i ps2pdf \{}.ps
答案 0 :(得分:2)
明确地给它输出PDF输出文件名:
find $STARTDIR -name '*.ps' -print | sed -e 's/.ps$//' | xargs -l -i ps2pdf '{}.ps' '{}.pdf'
答案 1 :(得分:2)
这是一个解决方案:
find $STARTDIR -name '*.ps' -print |
while read filename
do
ps2pdf ${filename} ${filename%.ps}.pdf
done
答案 2 :(得分:1)
注意我犯了一个错误?
Yessss,先生。
您的find
命令应该在一行中。或者,如果要将其分布在两行中,请使用\
作为行继续符号(必须是第一行中的最后一个字符,后面没有任何空格!)。
那是......
使用
find $STARTDIR -name '*.ps' -print | sed -e 's/.ps$//' | xargs -l -i ps2pdf \{}.ps
或使用
find $STARTDIR -name '*.ps' -print | sed -e 's/.ps$//' | \
xargs -l -i ps2pdf \{}.ps
甚至使用
find $STARTDIR -name '*.ps' -print \
| sed -e 's/.ps$//' \
| xargs -l -i ps2pdf \{}.ps
(无论你认为看起来对你的Bash阅读眼睛“更好”......)。
答案 3 :(得分:0)
for i `find $STARTDIR -name '*.ps'` ; do ps2pdf $i $i.ps.pdf ; done