使用Mac终端批量转换.ai到.svg

时间:2016-04-07 19:04:28

标签: macos svg batch-processing

我有一个包含数千个.ai文件的文件夹,我想使用Mac终端将它们批量转换为.svg文件。

到目前为止,我是通过Adobe Illustrator完成的,但批量转换.ai到.svg需要几天时间。

有什么方法可以通过终端进行吗?

P.S。请记住,我不是软件开发人员,而是普通用户,所以请尽可能简单地解释详细信息,否则我会迷路,我需要进一步的指示:)

由于

3 个答案:

答案 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