Найти файлы, не соответствующие *_abc.*
В дос, когда я хотел получить список файлов, соответствующих определенному фильтру, я мог использовать что-то вроде:
*.*
- значит вернуть все*.txt
- значит вернуть все файлы с.txt
расширение*_abc.*
- Возвращает каждый файл, который заканчивается_abc
Мой вопрос, используя эту структуру фильтра DOS, как я могу вернуть все файлы, не соответствующие *_abc.*
(Другими словами, вернуть все файлы, чье имя НЕ заканчивается _abc
)?
Я не помню, возможно ли это, и мне это нужно, так как компания, с которой я работаю, использует очень старую программу, которая все еще использует эту форму фильтрации команд для выбора файлов для работы с программой. К сожалению, я тоже не может сделать это с помощью пакетной команды... Это должен быть один оператор командной строки.
Спасибо!!!
2 ответа
Передайте результаты вашего списка в FINDSTR с соответствующей строкой поиска регулярного выражения и /V
возможность отфильтровывать совпадающие строки.
dir /b /a-d * | findstr /v /r "_abc\.[^.]*$"
Посмотрите на этот ответ на какой-то не связанный вопрос. Ответ, тем не менее, показывает, как выполнять поиск по именам файлов в формате REGEX, и, конечно, если вы используете REGEX, вы можете легко искать вещи, которые не соответствуют выражению.
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ
Извините, я не видел, что вам нужно, чтобы это был однострочный оператор, а не пакет. Я оставлю приведенный выше ответ, хотя в случае, если он кому-то поможет, и я также посмотрю, смогу ли я найти способ сделать это в одном утверждении.