我试图创建一个可以浏览图像/文件夹中所有子目录的shell脚本,然后从ImageMagick运行转换实用程序。
我可以让脚本在单个文件夹中正常工作,但无法从顶层目录中获取正确的语法。
# convert a series of *.png images to *.svg
# images/subfolder1
# images/subfolder2
# etc.
for dir in `ls /*`;
do
for x in `ls -1 /*.png`
do
y=`echo $x | cut -d "." -f1`
echo "convert $x into $y.svg"
convert $x $y.svg
done
done
完成这项工作的正确方法是什么?
答案 0 :(得分:2)
我认为使用GNU Parallel可以获得更好的性能,可读性和简单性:
find . -name \*.png | parallel convert {} {.}.svg
为什么要为所有可爱的英特尔核心付费而只使用其中一个呢?
答案 1 :(得分:1)
顺便说一句makefile:
pngs = $(wildcard */*.png)
svgs = $(pngs:.png=.svg)
all: $(svgs)
%.svg: %.png
@echo $@ $^
这也可以与make -j
答案 2 :(得分:0)
假设脚本是从images
目录运行的:
#!/bin/bash
shopt -s nullglob
for p in */*.png; do
s="${p/.png/.svg}"
echo "converting $p into $s"
# convert "$p" "$s"
done