gnuplot的;迭代目录中的文件以打印png

时间:2014-10-27 07:08:09

标签: gnuplot

在目录l250中我有几个文件。它们每个都以“l2_”开始,它是数值后的部分。我希望能够在last.sh文件中绘制大约300个文件的内容。我想知道我可以迭代文件的方式是什么,让它为$ 1,第二个值为$ 2。

我在想,因为文件位于我可以使用的当前目录中。但后来我正在阅读awk和csv,我不知道该怎么做。我想了解什么是更好的方法来迭代大量的文件rater然后把它放在main.sh并运行它。

main.sh

sh last.sh l2_4 1
sh last.sh l2_5 2
sh last.sh l2_6 3
sh last.sh l2_7 4
.
.
.

last.sh

gnuplot << EOF
set terminal png
set output "finished/$1.png"
set xlabel "Angs"
set ylabel "Angs"
set title "$1  |  $2 fs "
set zrange [0: 0.00001]
set pm3d map
splot "$1"
EOF

我在命令行中运行以下命令:

$sh main.sh

1 个答案:

答案 0 :(得分:7)

首先,您使用

生成包含所有文件名的列表
list = system('ls l2_*')

然后您可以使用do for ...进行迭代(需要gnuplot 4.6):

set terminal pngcairo
set xlabel "Angs"
set ylabel "Angs"
set zrange [0: 0.00001]
set pm3d map

list = system('ls l2_*')
i = 1

do for [file in list] {
    set output sprintf('finished/%s.png', file)
    set title sprintf("%s | %d fs", file, i)
    splot file
    i = i + 1
}