Синтаксис searchPattern
очень ограничен :
Строка поиска для сопоставления с именами файлов в path
. Этот параметр может содержать комбинацию допустимого буквального пути и символов подстановки (* и?), Но он не поддерживает регулярные выражения.
Подстановочные знаки позволяют сопоставить несколько файлов с заданным форматом, но не 'не разрешает исключение, поэтому это невозможно.
Вам придется полагаться либо на фильтрацию результата GetFiles
, либо использовать EnumerateFiles
с выражением фильтра, аналогично этому ответу :
Directory.EnumerateFiles("c:\\temp", "*.txt", SearchOption.AllDirectories)
.Where(f => Path.GetFileName(f) != "ab.txt")
.ToArray();
Обратите внимание, что этот подход вызывает ту же внутреннюю функцию InternalEnumeratePaths
в классе Directory
(см. здесь и здесь ), таким образом он не должен иметь никаких потерь производительности; Напротив, он должен работать еще лучше из-за вызова ToArray
после того, как коллекция была отфильтрована. Это особенно актуально, если большое количество файлов соответствует начальному searchPattern
.