for a in bar
do
for b in 1000000
do
montage -geometry 500 $a-$b-*-${0..20000..1000}.png \
$a-$b-${0..20000..1000}-final.jpg
done
done
我无法使用0 1000 2000 ... 20000
获取编号为$(0..20000.1000)
的所有图片。
在shell中还有其他方法可以做到这一点吗?
答案 0 :(得分:1)
$
{START..END..STEP}
% echo -{0..20000..1000}-
-0- -1000- -2000- -3000- -4000- -5000- -6000- -7000- -8000- -9000- -10000- -11000- -12000- -13000- -14000- -15000- -16000- -17000- -18000- -19000- -20000-
话虽如此,你需要一个循环来重复这些数字。包含范围的单词仅由其扩展替换。这意味着命令行不仅为每个元素调用,而是为所有元素一起调用。这也意味着,即使您使用相同的范围两次,它们的扩展也不会很方便地组合。
比较
% echo start a-{1..3}-b A-{1..3}-B end
start a-1-b a-2-b a-3-b A-1-B A-2-B A-3-B end
和
% for n in {1..3}; do echo start a-$n-b A-$n-B end; done
start a-1-b A-1-B end
start a-2-b A-2-B end
start a-3-b A-3-B end
所以在你的例子中而不是
montage -geometry 500 $a-$b-*-${0..20000..1000}.png \
$a-$b-${0..20000..1000}-final.jpg
你可能想做
for n in {0..20000..1000}; do
montage -geometry 500 $a-$b-*-$n.png $a-$b-$n-final.jpg
done
答案 1 :(得分:0)
#!/usr/bin/env python
import os
file_names= ["a","b"]
ranges = list(xrange(0, 20000, 1000))
l_s = list()
for f in range(0, len(file_names)):
for a in range(0, len(ranges)):
stringing = str(file_names[f]) + "--1000000-0-0-0-1-" + str(ranges[a]) + ".log.png"
l_s.append(stringing)
final = " ".join(l_s)
foo = "montage -geometry 500 " + str(final) + " " + str(file_names[f])+ "-final.jpg"
os.system(foo)