Se você preferir ficar com o grep, considere este loop
nums=/path/to/the/file_with_numbers_one_per_line
wdir=/path/to/dir/where/records2searchIn/located
rdir=/path/to/dir/to/put/results
for anum in $(cat ${nums}); do
grep -nr "${anum}" ${wdir} > ${rdir}/result_file_for_${anum};
done
que faz grep para cada número na lista e salva resultados individuais