我有一个包含数千个.ai文件的文件夹,我想使用Mac终端将它们批量转换为.svg文件。
到目前为止,我是通过Adobe Illustrator完成的,但批量转换.ai到.svg需要几天时间。
有什么方法可以通过终端进行吗?
P.S。请记住,我不是软件开发人员,而是普通用户,所以请尽可能简单地解释详细信息,否则我会迷路,我需要进一步的指示:)
由于
答案 0 :(得分:4)
Inkscape有一些很棒的命令行工具。 Check out their wiki page on this。
他们的python脚本ai2svg.py看起来应该可以解决问题。请尝试以下命令:
find . -name "filename*" -exec python ai2svg.py '{}' \;
将filename *替换为您要处理的匹配文件名。要了解有关在多个文件上执行命令的更多信息,请参阅this post。
希望这有帮助!
答案 1 :(得分:3)
Mikel建议的ai2svg.py脚本为我挂起,但似乎可以直接从终端调用Inkscape并完成这项工作:
将以下脚本保存为文件ai2svg
,通过chmod +x ai2svg
使其可执行,然后运行它,可选择传递该文件夹以查找Illustrator文件。
它会将该文件夹或当前的所有.ai文件转换为.svg
#!/usr/bin/bash
createsvg() {
local d
local svg
for d in *.ai; do
svg=$(echo "$d" | sed 's/.ai/.svg/')
echo "creating $svg ..."
inkscape -f "$d" -l "$svg"
done
}
if [ "$1" != "" ];then
cd $1
fi
createsvg
来源:https://gist.github.com/WebReflection/b5ab5f1eca311b76835c
答案 2 :(得分:0)
我正在使用以下脚本。它受到21世纪版本的启发。它转换在命令行上指定的文件,因此它也可以处理单个文件。正如最初的问题提到的大量工作一样,空间可能是一个问题,因此此脚本压缩了生成的svg。以我为例,与原始.ai文件相比,这可以节省90-95%的空间。
#!/bin/sh
set -e
for file in "$@"
do
case "$file" in
*.ai|*.AI)
outfile=$(echo "$file" | sed 's/.ai/.svg/i')
zoutfile=$(echo "$file" | sed 's/.ai/.svgz/i')
if [ -e "$outfile" -o -e "$zoutfile" ]; then
echo "$outfile already exists, skipping"
else
inkscape --file="$file" --export-plain-svg="$outfile"
gzip -9 "$outfile"
mv "$outfile".gz "$zoutfile"
fi
;;
*)
echo "$file does not have a .ai extension, skipping"
;;
esac
done