Rob*_*sse 2 scripts svg inkscape png
我对 bash 脚本非常陌生,我希望有人可以帮助我完成这项任务。
我有一个充满 *.SVG 文件的目录,我想使用以下命令将它们与 inkscape 批量转换为 PNG:
inkscape -f FILENAME.svg -w WIDTH -h HEIGHT -e FILENAME.png
Run Code Online (Sandbox Code Playgroud)
该脚本还有一个参数 $width 和 $height。如果只给出一个参数,脚本应创建一个方形图像,其中 $width=$height
例子
目录内容:
file1.svg
file2.svg
file3.svg
./batchscript.sh 1024 2000
Run Code Online (Sandbox Code Playgroud)
应该执行
inkscape -f file1.svg -w 1024 -h 2000 -e file1.png
inkscape -f file2.svg -w 1024 -h 2000 -e file2.png
inkscape -f file3.svg -w 1024 -h 2000 -e file3.png
Run Code Online (Sandbox Code Playgroud)
./batchscript.sh 3000
Run Code Online (Sandbox Code Playgroud)
应该执行
inkscape -f file1.svg -w 3000 -h 3000 -e file1.png
inkscape -f file2.svg -w 3000 -h 3000 -e file2.png
inkscape -f file3.svg -w 3000 -h 3000 -e file3.png
Run Code Online (Sandbox Code Playgroud)
之后目录内容应如下所示:
file1.svg
file1.png
file2.svg
file2.png
file3.svg
file3.png
Run Code Online (Sandbox Code Playgroud)
如果你有 GNU Parallel 试试这个(基于 Letizia 的解决方案):
#!/bin/bash
if [ $# -eq 1 ]; then
width=$1
height=$1
else
if [ $# -eq 2 ]; then
width=$1
height=$2
else
echo "Error: missing parameters!"
echo "Usage: myscript.sh width [height]"
exit 1
fi
fi
parallel inkscape -f {} -w $width -h $height -e {.} ::: *.svg
Run Code Online (Sandbox Code Playgroud)
所有新计算机都具有多个内核,但大多数程序本质上是串行的,因此不会使用多个内核。然而,许多任务是极其可并行化的:
GNU Parallel 是一个通用并行器,可以轻松地在同一台计算机或多台您可以通过 ssh 访问的计算机上并行运行作业。
如果您想要在 4 个 CPU 上运行 32 个不同的作业,则并行化的直接方法是在每个 CPU 上运行 8 个作业:

相反,GNU Parallel 在完成后会生成一个新进程 - 保持 CPU 处于活动状态,从而节省时间:

安装
个人安装不需要 root 访问权限。这样做可以在 10 秒内完成:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Run Code Online (Sandbox Code Playgroud)
有关其他安装选项,请参阅http://git.savannah.gnu.org/cgit/parallel.git/tree/README
了解更多
查看更多示例: http: //www.gnu.org/software/parallel/man.html
观看介绍视频:https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1
浏览本教程:http://www.gnu.org/software/parallel/parallel_tutorial.html
注册电子邮件列表以获得支持:https ://lists.gnu.org/mailman/listinfo/parallel
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |