对脚本的简单修改:
#!/bin/bash
# Convert pdf to png
for f in *.pdf
do
png="png/${f%pdf}png"
if [ -e "$png" -a "$f" -nt "$png" ]; then
continue
fi
echo "Converting $f"
gs -dNOPAUSE -dBATCH -sDEVICE=png256 -r480 -q -sOutputFile="$png" "$f"
done
首先,我们$png
使用就地编辑创建一个变量。基本上,%pdf
bash 告诉 bash 删除最后一次出现的pdf
,即扩展名。然后我们可以将它放入一个字符串中,为其添加前缀png/
并添加 png 扩展名。这为您节省了最后一个重命名命令。
现在我们有一个if
语句,continue
如果满足某个条件则循环。继续意味着转到循环的下一个迭代,而不为该迭代执行任何其他操作。条件是 "$png" 存在 ( -e "$png"
) 并且 ( -a
) "$f" 比 "$png" ( "$f" -nt "$png"
) 更新。
但我建议编写一个 Makefile:
PDFS := $(wildcard *.pdf)
PNGS := $(addprefix png/,$(PDFS:.pdf=.png))
all: $(PNGS)
png/%.png: %.pdf
gs -dNOPAUSE -dBATCH -sDEVICE=png256 -r480 -q -sOutputFile="$@" "$<"
make
并在您想要生成更新的 PNG的任何时候运行它。