Just wanted to drop this in here. I whipped this up in Powershell (guessing you are using Windows). I created 2 directories with random files in them, then created similar folders in the directories (some the same and some different) and then moved files into those directories. Here's what I came up with
$var1 = @(Get-ChildItem c:\test1 -recurse)
$var2 = @(Get-ChildItem c:\test2 -recurse)
Compare-Object $var1 $var2 -includeequal -excludedifferent -passthru
Pretty straightforward really. What this does is builds an array from whatever directories you chose (in this case 2 folders called test1 and test2 in C:), goes the through those folders and any subfolders it finds, then compares the second directory against the first. This will find any files that are the same, regardless of folder, and put them into a list formated by directory. If you want to output it to a file, simply add this to the end
$var1 = @(Get-ChildItem c:\test1 -recurse)
$var2 = @(Get-ChildItem c:\test2 -recurse)
Compare-Object $var1 $var2 -includeequal -excludedifferent -passthru > c:\results.txt
and you will get a file in C: named results.txt that will have the results saved. It's quick and free. Best of all you can modify it however you'd like and achieve different results (try removing the -includeequal -excludedifferent and -passthru). Hope it helps!