Есть ли некоторый Unix util, который позволит мне grep несколько файлов с небольшим вводом?

Я чувствовал, что мне нужно было написать этот дополнительный очень упрощенный ответ, так как это был первый удар 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/

6
задан Johan Kotlinski 22 June 2009 в 16:30
поделиться

8 ответов

Мне нравится ack :

Что бы вы предпочли ввести?

$ grep pattern $ (find. -Type f | grep -v '\ .svn ')

Шаблон $ ack

14
ответ дан 8 December 2019 в 03:54
поделиться

Вы пробовали ack .

3
ответ дан 8 December 2019 в 03:54
поделиться

Возможно, вам поможет оболочка. Например, в zsh вы можете выполнить

grep foo **/*.py

при условии, что количество файлов .py не превышает максимальное количество аргументов, разрешенных для команды (64 КБ?). Обратите внимание, что вы можете квалифицировать подстановку файлов, например

grep foo **/*.py(mh-5)

, что даст вам все, что было изменено за последние 5 часов.

4
ответ дан 8 December 2019 в 03:54
поделиться

Это называется grep * wink *: -)

Все py в текущем каталоге

grep -R foo *.py

Все файлы в текущем и любом подкаталоге

grep -R foo .
2
ответ дан 8 December 2019 в 03:54
поделиться

zsh имеет рекурсивную подстановку, так что вы можете сделать

grep foo **/*.py

Смотри, ма, не найти :)

ОБНОВЛЕНИЕ: О, также, если ты что-то много делаешь, это не повредит псевдониму или написать для него функцию, конечно

2
ответ дан 8 December 2019 в 03:54
поделиться
find . -name "*.py" -exec grep -H foo '{}' ';'
1
ответ дан 8 December 2019 в 03:54
поделиться
grep -r --include='*.py' foo *
1
ответ дан 8 December 2019 в 03:54
поделиться

Я часто использую что-то очень похожее на вашу пару find / grep, хотя и с еще большим количеством условий - например, за исключением файлов в каталогах .svn . Я так часто делаю это, что просто создал сценарии для этих вызовов, поэтому я могу вызвать "src-grep ..." и заставить его делать в основном то, что вы делаете здесь. (Затем я добавил необязательное расширение для ряда контекстных строк, передаваемых флагу grep -C, если он указан, и отдельную версию для grep результатов для операторов определения.)

Это более полезно и быстрее, чем рекурсивный grep для меня.

0
ответ дан 8 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: