对于整数的任何顺序范围, n1..n2
我如何可以使用命令行工具来把它解析为长度的范围<= n
?
例
作为一个具体的例子,我有一个命名的文件夹目录1253..2050
。 每个文件夹都有一个称为脚本job.sh
,我可以在20个职位(因为每个节点有20个内核)批次提交。 因此,我想生成以下命令:
样品输入:
echo {1253..1301}
对于特定的情况下,我可以生成使用任一整数的该序列/bin/ls
或cat runs.txt
。
输出示例:
qsub -t 1253-1272 array.pbs
qsub -t 1273-1292 array.pbs
qsub -t 1293-1301 array.pbs
这应该做你想要什么。
count=20
off=0
dirs=(*)
while (( (off + count) < ${#dirs[@]} )); do
qsub -t ${dirs[off]}-${dirs[off+count]} array.pbs
((off+=count + 1))
done
if [ $off -ne ${#dirs[@]} ]; then
qsub -t ${dirs[off]}-${dirs[@]: -1} array.pbs
fi
这最后if
可能不是你的情况需要而这个循环排序的假定范围将是完整的(我假设qsub
预计,太)。
尝试这种解决方案,可能是能够帮助你:
echo {1253..1301} | tr ' ' "\n" | awk '{print "gksub -t " $1 "/job.sh"}'