Псевдоним для "| foreach {" $ _ "}" в PowerShell - PullRequest
2 голосов
/ 14 июля 2011

Мне нравится использовать следующий код для эмуляции поведения Unix "найти":

ls DIRECTORY -recurse -include PATTERN | foreach { "$_" }

На самом деле, есть пара других команд, к которым я бы хотел добавить эту | foreach { "$_" } к,Поэтому я пытаюсь найти способ упростить ввод текста.Я пробовал что-то вроде этого:

function xfind {
    ls $args | foreach { "$_" }
}

А потом я вызвал это так:

xfind DIRECTORY -recurse -include PATTERN

Но, похоже, это не так ...

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Попробуйте просто использовать -name переключатель Get-ChildItem (он же ls, dir):

ls DIRECTORY -recurse -include PATTERN -name

Этот способ является естественным, чистым и эффективным.

2 голосов
/ 14 июля 2011

Попробуйте, это можно расширить до полной расширенной функции. Ключ заключается в том, чтобы передать параметры в ls, передав их все с помощью специальной переменной (PSBoundParameters), которая доступна в расширенных функциях:

function xfind {

    [cmdletbinding()]

    param(
        [string[]]$path,
        [switch]$recurse,
        [string[]]$include
    )

    ls @PSBoundParameters | foreach { "$_" }   
}
...