#!/bin/bash
declare -a all
all=('ls -1 | grep -v '^tmp$'')
n=2
i=0
while [ $((n+i)) -lt ${#all[*]} ]; do
declare -a train
j=0
while [ $j -lt $n ]; do
train[$j]=${all[$((i+j))]}
cp ${all[$((i+j))]} tmp/
j=$((j+1))
done
test=${all[$((i+j))]}
i=$((i+1))
# do something:
echo "loop $i: contents of tmp/ are" $(ls tmp)", test=$test"
rm -f tmp/*
done
Primeiro coloque todos os arquivos no array all .
Agora faça um loop enquanto houver espaço na matriz (deslocamento i mais número n é menor que o tamanho da lista de arquivos).
Use um loop para colocar n nomes de arquivos na matriz train a partir do deslocamento i e copie o arquivo no subdiretório tmp . Depois do loop, o próximo nome do arquivo é colocado em test .
Agora "faça alguma coisa".
Incremente o deslocamento i e execute o loop novamente.
Eu pessoalmente usaria o perl para isso.