Normalne by to mozno slo riesit rekurzivne, pripadne nejakou vstavanou metodou, ktora kontroluje "subdirectories", ale ide to dokonca este jednoduchsie:
string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.bmp",
SearchOption.AllDirectories);
Toto by malo prehladat cely adresar aj s podadresarmi.
Co sa nazvu suboru tyka, tam to len nejak rozparsujes, napriklad substringom, alebo niecim podobnym.
Resp, pokial je ten nazov nieco ako vzdyrovnakacast_meniacasacast.pdf, mozes to pomocou String.Split() rozparsovat do pola a tu konstantnu cast porovnavat s nejakym retazcom. Chce to len pohrat sa so stringom a urcite najdes nejake elegantne riesenie :)