Возможности фильтрации командлета Get-ChildItem. Часть 4.

В этой статье мы рассмотрим использование параметра -Filter.

Это вторая часть серии.
Остальные статьи:
Возможности фильтрации командлета Get-ChildItem. Часть 1.
Возможности фильтрации командлета Get-ChildItem. Часть 2.
Возможности фильтрации командлета Get-ChildItem. Часть 3.

Параметр -Filter, равно как и параметры -Include и -Exclude, используется для фильтрации результатов выполнения командлета. Однако он отличается тем, что при его использовании, результаты отфильтровываются непосредственно при получении элементов (например, папок и файлов с диска файловой системы). Что касается параметров -Include и -Exclude, то они  действуют уже после того, как все результаты получены, что несколько снижает эффективность команды, хотя вряд ли это будет заметно при обычном использовании.

В качестве значения параметра -Filter мы может указать имя какого-либо элемента или некоторый шаблон.

Команда:

ls -Path C:\rootfolder -Filter *.ps1

выведет нам все файлы с расширением .ps1, находящиеся в папке c:\rootfolder.

26

Если мы укажем «*» после имени папки, это не окажет влияния на результаты:

Get-ChildItem -Path C:\rootfolder\* -Filter *.ps1

27

Также в качестве фильтра мы можем указать имя папки, например:

Get-ChildItem -Path C:\rootfolder -Filter folder1

28

Если же в значении параметра -Filter после имени папки мы добавим «\«:

Get-ChildItem -Path C:\rootfolder -Filter folder1\

то команда выведет все дочерние элементы папки folder1, расположенной в c:\rootfolder.

29

Такой же эффект будет, если указать в качестве значения фильтра «folder*»

Get-ChildItem -Path C:\rootfolder -Filter folder1\*

30

Также в качестве значения параметра -Filter мы можем указать «folder1*.ps1»

Get-ChildItem -Path C:\rootfolder -Filter folder1\*.ps1

Это позволит нам получить файлы с расширением .ps1, расположенные в папке c:\rootfolder\folder1.

31

Мы можем пойти еще дальше, и указать в качестве фильтра «folder1\sub1*.ps1»

Get-ChildItem -Path C:\rootfolder -Filter folder1\sub1\*.ps1

Эта команда в качестве результата выведет файлы с расширением .ps1 из каталога c:\rootfolder\folder1\sub1.

32

Однако, сделать, например, такую вещь у нас не получится:

Get-ChildItem -Path C:\rootfolder -Filter *\*.ps1

33

Также стоит сказать, что параметр -Filter, в отличие от -Include и -Exclude не принимает множественных значений, то есть мы не сможем сделать следующее:

Get-ChildItem -Path C:\rootfolder -Filter *.ps1,*.xml

34


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s