Using system;using system.collections.generic;using system.io;using system.linq;using System.Text;using System.text.regularexpressions;using system.threading.tasks;namespace fileutility{public class Program {Pub Lic static void Deepcopy (DirectoryInfo source, DirectoryInfo target, params string[] excludepatterns) { if (target. Fullname.contains (source. FullName)) return; Go through the directories and recursively call the Deepcopy Method for each one foreach (DirectoryInfo dir In source. GetDirectories ()) {var dirName = dir. Name; var shouldexclude = Excludepatterns.aggregate (False, (current, pattern) = + Current | | Regex.match (DirName, pattern). Success); if (!shouldexclude) deepcopy (dir, Target. Createsubdirectory (dir. Name), excludepatterns); }//Go ahead and copy each file to the target directory foreach (FilEinfo file in source. GetFiles ()) {var fileName = file. Name; var shouldexclude = Excludepatterns.aggregate (False, current , pattern) = Current | | Regex.match (FileName, pattern). Success); if (!shouldexclude) file. CopyTo (Path.Combine (target). FullName, FileName)); }} static void Main (string[] args) {deepcopy (New DirectoryInfo (@ "d:/test/b"), New Direct Oryinfo (@ "d:/test/a")); Deepcopy (New DirectoryInfo (@ "d:/test/c"), New DirectoryInfo (@ "D:/test/c/c.1"); Deepcopy (New DirectoryInfo (@ "d:/test/1/"), New DirectoryInfo (@ "d:/test/2/"), new string[] {". *\\.txt"}); Console.WriteLine ("Copy succeeded ..."); Console.readkey (); } }}