for n in {1000..1200}; do ....
Tuossa kokeillaan onko 1000, 1001, 1002,....  Löytyyhän se noinkin mutta tehdään aina 200 yritystä eli tämä on  "raa'an voiman ratkaisu".   
Usein tehokkain ratkaisu on keksiä seula joka mahdollisimman nopeasti poistaa ei-toivotun datan ilman että tarvitsee pyöriä silmukassa. Putkessa edettäessä työ nopeutuu putken loppua kohti datan vähetessä. Esitän tämän esimerkin teknisestä uteliaisuudesta ajatuksella oppia itse ja näyttää mullekin vaikka tuo ratkaisusi on riittävän tehokas mille hyvänsä koneelle ja tekee työnsä.
time for n in {1000..1200}; do apu=$(cat /etc/passwd | grep ':'$n':' ); [[ ! $apu ]] && continue || echo ${apu%%\:*}; done.
.
real   0m3.808s
user   0m1.132s
sys   0m0.680s
time cat /etc/passwd | grep "/home/" | awk -F':' '{ if ( $3 >= 500 ) print $1 }'.
.
real   0m0.042s
user   0m0.012s
sys   0m0.004s
Jälkimmäinen tapa on noin 91 kertaa tehokkaampi.  Selitän hieman mitä tuo tekee. Ensin listataan tuo "passwd" -tiedosto, poimitaan mukaan vain ne rivit joilla esiintyy "home". Tuossa vaiheessa datan määrä jo pieneni paljon.  Poimitaan niistä mukaan vain ne joissa kolmannessa kentässä lukee yli 500 ja tulostetaan (eli välitetään eteenpäin) näistä pelkästään kenttä numero yksi eli käyttäjätunnus.  "awk" on tuossa kätevä kun sille voi kertoa että kaksoispiste on välimerkki joka erottaa kentät. Tuohon voi tietysti valita minkä merkin kulloinkin tarvitsee kentän välimerkiksi, tässä tapauksessa tarvittiin kaksoispistettä.