You can use Bridge to find your files.
Using ExtendScript Toolkit you could run the following code, make sure you change the LensToFind first, a text file will be created on the desktop with the results.
I have just tried it with 10,000+ files and 80+folders deep and it took 10 seconds on my laptop.
#target bridge
function getLensInfo(){
var Loginfo = new File(Folder.desktop + "/Lens Found.txt");
Loginfo.open("w", "TEXT", "????");
$.os.search(/windows/i) != -1 ? Loginfo.lineFeed = 'windows' : Loginfo.lineFeed = 'macintosh';
var folders =[];
var topLevel = Folder.selectDialog("Please select top level folder");
folders = FindAllFolders(topLevel, folders);
folders.unshift(topLevel);
//change lens info to suit
///////////////
var LenstoFind = "75.0-300.0 mm";
///////////////
for(var z in folders){
var fileList= Folder(folders[z]).getFiles(/\.(jpg|tif|psd|crw|cr2|nef|dcr|erf|raf|orf|mrw|mos|srf|pef|x3f|raw)$/i);
for(var a in fileList){
if(!fileList[a] instanceof File) continue;
var Thumb = new Thumbnail( fileList[a] );
var md = Thumb.synchronousMetadata;
app.synchronousMode = true;
var Lens ='';
md.namespace = "http://ns.adobe.com/exif/1.0/aux/";
Lens =md.Lens;
if(Lens == LenstoFind) Loginfo.writeln(decodeURI(fileList[a]));
}
}
Loginfo.close();
alert("All Files Processed");
}
function FindAllFolders( srcFolderStr, destArray) {
var fileFolderArray = Folder( srcFolderStr ).getFiles();
for ( var i = 0; i < fileFolderArray.length; i++ ) {
var fileFoldObj = fileFolderArray[I];
if ( fileFoldObj instanceof File ) {
} else {
destArray.push( Folder(fileFoldObj) );
FindAllFolders( fileFoldObj.toString(), destArray );
}
}
return destArray;
}
getLensInfo();