You can use find with a construction like this
find /root -path /root/tmp -prune -o -name $FILE1 -o -name $FILE2 -o -name $FILE3 -print
It would take some shell coding to read in the filenames and build the find command to run.
while read FILE; do
FILELIST=$FILELIST" -o -name "$FILE" -print" ;
done < fnames.txt
# Uncomment the next line for testing
find /root -path /root/tmp -prune $FILELIST
This would not be an infinitely scalable solution, as there is a finite limit on the number or characters allowed in a single command.
Now I wait for the shell coding gurus to say exactly how many ways this is wrong! :-)