#!/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.