Ponga todos los nombres de archivo en una matriz llamada "archivos" en bash:
files=( * )
tamaño de la matriz:
echo ${#files[@]}
defina 2/3 de ellos como tamaño de muestra:
take=$((2*${#files[@]}/3))
for i in $(seq 1 $take)
do
r=$((RANDOM%${#files[@]}))
echo ${files[r]}
done
Esto seleccionará duplicados y se no probado con nombres de archivo con espacios en blanco y tal.
La forma más sencilla de evitar duplicados es iterar sobre todos los archivos y elegir cada uno con una probabilidad de 2/3, pero esto no necesariamente conducirá a 200 archivos.
Esto eliminará un archivo si fue elegido de la lista y cumple con sus 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()
...