Coloque todos os nomes de arquivos em uma matriz chamada "arquivos" no bash:
files=( * )
tamanho da matriz:
echo ${#files[@]}
defina 2/3 deles como tamanho da amostra:
take=$((2*${#files[@]}/3))
for i in $(seq 1 $take)
do
r=$((RANDOM%${#files[@]}))
echo ${files[r]}
done
Isso selecionará duplicatas e não será testado com nomes de arquivos com espaços em branco e outros.
A maneira mais simples de evitar duplicatas é iterar sobre todos os arquivos e escolher cada um com chance de 2/3, mas isso não leva necessariamente a 200 arquivos.
Isso removerá um arquivo se ele tiver sido escolhido da lista e atender aos seus requisitos:
#!/bin/bash
files=( * )
# define 2/3 of them as sample size:
take=$((2*${#files[@]}/3))
while (( i < $take ))
do
r=$((RANDOM%${#files[@]}))
f=${files[r]}
if [[ -n $f ]]
then
i=$((i+1))
echo ${files[r]}
unset files[r]
fi
done
list.files()
...