Perform Find should be all that is needed to get the results you want. I cannot tell from here why that would leave you with a found set of all records. Are you sure you have it set to do a Perform FInd and not some other step?
Could there be a script trigger set up that is interfering? (The actions of one script can trip other script triggers which then interrupt the original script, returning control to the original script only when done and only if a Halt Script step doesn't halt all such pending scripts.)
You might also be interested in the scripted find examples in this thread: Scripted Find Examples
Ok, here's the test I ran.
3 buttons on the layout. 1 "Enter Find Mode" (no script, just the step in button setup), 2. "Perform Find" (no script, just the Perform Find/Replace script step in button setup) and 3 "Run Script" runs a script with 2 steps: first Perform Find/Replace same as button 2 and second Enter Browse Mode.
Button 1 obviously works fine.
Button 2 Also works and limits the found set to the search string but it is left in Find Mode.
Button 3 is a problem. using the script debugged, after the perform find, the found set is properly limited but as soon as it returns to browse mode the entire table is in the found set.
There are no triggers.
2. "Perform Find" (no script, just the Perform Find/Replace script step in button setup)
Peform Find/Replace is the wrong script step.
There's a different step and it will look exactly like this:
Perform Find