更改文件夹中多个文件的笔触或填充颜色

问题描述

我有 9600 个黑色图标 (SVG)。我需要更改笔触和/或填充(如果存在为白色,然后再次为蓝色)。然后我将有两个包裹,一个是白色的,一个是蓝色的。有没有办法在 Adob​​e Illustrator 中自动执行此操作而无需打开每个文件。 或者其他方式?

我尝试过这样的终端,但没有奏效。

#/bin/sh
COLOR=#fff
sed -i -E 's/fill\="[^"]+"//g; s/stroke\="[^"]+"//g' *.svg
sed -i "s/<path/<path fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<rect/<rect fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polygon/<polygon fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<circle/<circle fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<ellipse/<ellipse fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polyline/<polyline fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i -E "s/stroke\:[^\;]+/stroke\:$COLOR/g" *.svg
sed -i -E "s/fill\:\#[0-9]+/fill\:$COLOR/g" *.svg

解决方法

我相信这可以通过两种方式完成。通过 RegExp 文本替换和通过 Illustrator 脚本。但是 Illustrator 会打开每个文件,当然。并将保存它。这是个问题吗?您无需手动打开文件。

至于文本替换有一个技巧。据 SVG 所知,如果要绘制黑色填充形状,则不需要为该形状添加任何样式描述。黑色填充形状是默认形状。下面是一个黑色矩形的例子:

<rect x="100" y="100" width="100" height="100"/>

这里 a 是蓝色矩形:

<style type="text/css">
    .st0{fill:#0000ff}
</style>
<rect x="100" y="100" width="100" height="100" class="st0"/>

因此,除非原始颜色不是黑色,否则将任何颜色更改为任何颜色的任务非常简单。由于黑色填充形状基本上没有类。您需要先为所有没有类的形状添加一些类。它需要更古怪的 RegExp。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...