Supprimer les fichiers du répertoire si le nom de fichier contient un mot

J’ai besoin de vérifier un répertoire pour voir s’il existe des fichiers dont le nom de fichier contient un mot clé spécifique et, le cas échéant, les supprimer. Est-ce possible?

Par exemple, supprimez tous les fichiers existants dans ” C:\Folder ” dont le nom de fichier contient le mot clé “Apple”.

Pour développer la réponse de Henk, vous avez besoin de:

 ssortingng rootFolderPath = @"C:\\SomeFolder\\AnotherFolder\\FolderCOntainingThingsToDelete"; ssortingng filesToDelete = @"*DeleteMe*.doc"; // Only delete DOC files containing "DeleteMe" in their filenames ssortingng[] fileList = System.IO.Directory.GetFiles(rootFolderPath, filesToDelete); foreach(ssortingng file in fileList) { System.Diagnostics.Debug.WriteLine(file + "will be deleted"); // System.IO.File.Delete(file); } 

SOYEZ TRÈS PRUDENT!

Notez que j’ai commenté la commande delete. Exécutez-le et testez-le soigneusement avant de le laisser supprimer quoi que ce soit!

Si vous souhaitez supprimer de manière récursive des fichiers dans TOUS les sous-dossiers du dossier racine, ajoutez System.IO.SearchOption.AllDirectories); à l’appel GetFiles.

Si vous faites cela, c’est aussi une très bonne idée de refuser de s’exécuter si rootFolderPath fait moins de 4 caractères environ (une simple protection contre la suppression de tout dans C: \ – j’y suis allé et je l’ai fait et c’est pas amusant! !!)

Vous pouvez utiliser System.IO.Directory.GetFiles() pour obtenir une liste des fichiers, au format chaîne [].

Ensuite, vous pouvez utiliser System.IO.File.ReadAllText() pour lire des fichiers complets ou, s’ils sont très volumineux, ouvrir un TextReader avec System.IO.File.OpenText() .

Si vous recherchez un mot clé littéral, Ssortingng.Contains() est tout ce dont vous avez besoin.

La suppression d’un fichier peut être effectuée avec System.IO.File.Delete() . Assurez-vous que le fichier est à nouveau fermé.

Edit, 2 exemples de GetFiles() :

 ssortingng[] fileNames = System.IO.Directory.GetFiles(@"C:\"); ssortingng[] fileNames = System.IO.Directory.GetFiles(@"C:\", @"*.sys"); 

Plus ou moins, ceci:

 ssortingng DeleteThis = "apple"; ssortingng[] Files = Directory.GetFiles(@"C:\Folder"); foreach (ssortingng file in Files) { if (file.ToUpper().Contains(DeleteThis.ToUpper())) { File.Delete(file); } } 
 new List(Directory.GetFiles(@"C:\Folder")).ForEach(file => { if (file.IndexOf("apple", SsortingngComparison.OrdinalIgnoreCase) >= 0) File.Delete(file); }); 

ou

 new List(Directory.GetFiles(@"C:\Folder")).ForEach(file => { Regex re = new Regex("apple", RegexOptions.IgnoreCase); if (re.IsMatch(file)) File.Delete(file); }); 
 new List(Directory.GetFiles(@"C:\Folder")).ForEach(file => { if (file.ToUpper().Contains("apple".ToUpper())) File.Delete(file); });