Masukkan semua nama file ke dalam array bernama "file" di bash:
files=( * )
ukuran array:
echo ${#files[@]}
tentukan 2/3 dari mereka sebagai ukuran sampel:
take=$((2*${#files[@]}/3))
for i in $(seq 1 $take)
do
r=$((RANDOM%${#files[@]}))
echo ${files[r]}
done
Ini akan pilih duplikat, dan yang tidak diuji dengan nama file dengan kosong dan semacamnya.
Cara paling sederhana untuk menghindari duplikat adalah, untuk mengulangi semua file, dan memilih masing-masing dengan peluang 2/3, tetapi ini tidak akan menyebabkan 200 file.
Ini akan menghapus file jika dipilih dari daftar dan memenuhi persyaratan Anda:
#!/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()
...