Хотя Get-ChildItem
имеет параметр -Exclude
, он работает только с частью имя-файла , а не с полным путем.
Следовательно , вы должны выполнить фильтрацию исключения постфактум, используя отрицательную форму -like
, оператор сопоставления подстановочных знаков
pylint ((Get-ChildItem -Recurse -Name -Filter *.py) -notlike 'exclude_dir/*')
Обратите внимание на использование -Filter
скорее чем -Include
, что ускоряет операцию, поскольку фильтрация происходит в источнике, а не применяется PowerShell постфактум.
Однако, учитывая, что вы, похоже, исключаете только одна папка верхнего уровня , вы можете попробовать:
pylint (Get-ChildItem -Recurse -Path * -Filter *.py -Exclude exclude_dir)
Обратите внимание, что я пропустил -Name
в этом случае, потому что он не будет работать должным образом в этом сценарии. В результате соответствующие файлы неявно передаются как полные пути к pylint
.
Начиная с PowerShell 7.0, -Name
демонстрирует несколько проблемных c поведений, которые кратко описаны в этом ответе .