Я чувствовал, что мне нужно было написать этот дополнительный очень упрощенный ответ, так как это был первый удар Google при поиске информации об использовании ссылочных параметров в функциях Powershell. Хотя ваш вопрос был не о функциях, а о рабочих процессах:
Пример использования ссылочных параметров в функциях (не работает с рабочим процессом):
Function myFunction ([ref]$aString) {
$aString.Value = "newValue";
}
$localVariable = "oldValue"
Write-Host $localVariable # Outputs: oldValue
myFunction ([ref]$localVariable);
Write-Host $localVariable # Outputs: newValue
С помощью функций вы можете определить параметр как ссылка и другой тип, например, такой (но не с рабочими процессами):
Function myFunction ([ref][string]$aString) {
$aString.Value = "newValue";
}
$localVariable = "oldValue"
Write-Host $localVariable # Outputs: oldValue
myFunction ([ref]$localVariable);
Write-Host $localVariable # Outputs: newValue
Я согласен с Яном: вам не следует пытаться использовать ссылочные параметры в рабочих процессах из-за ограничений рабочих процессов (вызов метода для объектов): https://blogs.technet.microsoft.com/heyscriptingguy/2013/01/02/powershell-workflows-restrictions/
Мне нравится ack :
Что бы вы предпочли ввести?
$ grep pattern $ (find. -Type f | grep -v '\ .svn ')
Шаблон $ ack
Возможно, вам поможет оболочка. Например, в zsh вы можете выполнить
grep foo **/*.py
при условии, что количество файлов .py не превышает максимальное количество аргументов, разрешенных для команды (64 КБ?). Обратите внимание, что вы можете квалифицировать подстановку файлов, например
grep foo **/*.py(mh-5)
, что даст вам все, что было изменено за последние 5 часов.
Это называется grep * wink *: -)
Все py в текущем каталоге
grep -R foo *.py
Все файлы в текущем и любом подкаталоге
grep -R foo .
zsh имеет рекурсивную подстановку, так что вы можете сделать
grep foo **/*.py
Смотри, ма, не найти :)
ОБНОВЛЕНИЕ: О, также, если ты что-то много делаешь, это не повредит псевдониму или написать для него функцию, конечно
Я часто использую что-то очень похожее на вашу пару find / grep, хотя и с еще большим количеством условий - например, за исключением файлов в каталогах .svn . Я так часто делаю это, что просто создал сценарии для этих вызовов, поэтому я могу вызвать "src-grep ..." и заставить его делать в основном то, что вы делаете здесь. (Затем я добавил необязательное расширение для ряда контекстных строк, передаваемых флагу grep -C, если он указан, и отдельную версию для grep результатов для операторов определения.)
Это более полезно и быстрее, чем рекурсивный grep для меня.