सभी फ़ाइलनामों को बैश में "फाइल" नामक एक सरणी में रखें:
files=( * )
सरणी का आकार:
echo ${#files[@]}
नमूना आकार के रूप में उनमें से 2/3 को परिभाषित करें:
take=$((2*${#files[@]}/3))
for i in $(seq 1 $take)
do
r=$((RANDOM%${#files[@]}))
echo ${files[r]}
done
यह डुप्लिकेट का चयन करेंगे, और है नहीं रिक्त स्थान है और इस तरह के साथ फ़ाइल नामों के साथ परीक्षण किया गया।
डुप्लिकेट से बचने का सबसे सरल तरीका है, सभी फ़ाइलों पर पुनरावृत्ति करना, और प्रत्येक को 2/3 के मौके के साथ चुनना है, लेकिन यह जरूरी नहीं कि 200 फाइलों तक ले जाएगा।
यदि यह सूची से चुना गया था और आपकी आवश्यकताओं को पूरा करेगा तो यह एक फाइल को हटा देगा:
#!/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()
...