или воспользоваться программой командной строки move.
То есть просто создать дочерний процесс без создания окна. Параметры запуска "move c:\test\file1.txt D:\folder2\file2.txt" - перенести файл file1.txt из каталога test диска C: в каталог folder2 диска D: под именем file2.txt.
Думаю, это нормальное решение, т.к. задача по перемещению файла будет возлагаться на программу, которая предоставлена вместе с операционной системой. А в своей программе ты уже просто реализуешь алгоритмы поиска и сортировки.
примерно как-то так
void yourbestfunction()
{
ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);
startInfo.Arguments = "move C:\test\file1.txt D:\folder2\file2.txt";
Process.Start(startInfo);
}