Get-ChildItem . -Include *.txt -Recurse | foreach {(Get-Content $_).Count}
Сжатый вниз немного с псевдонимами:
GCI . -Include *.txt -Recurse | foreach{(GC $_).Count}
Даст результаты, подобные этому:
Lines Words Characters Property
----- ----- ---------- --------
21
40
29
15
294
13
13
107
Править: Измененный для рекурсивного вызова через подпапки.
РЕДАКТИРОВАНИЕ 2: Удаленное использование Объекта Меры.
Проблема в что указанное вами действие
выполняется для элементов списка, но результат нигде не возвращается ... ваши s
являются только локальной переменной.
Изменение значения list in-place, вероятно, будет иметь реальный foreach
, но если вы счастливы получить новый список в результате, вы можете попробовать:
list = list.ConvertAll(s => s + "test");
Не совсем то же самое ... но так близко, как вы получит ...
Это невозможно сделать, если тип списка не является изменяемым ссылочным типом (и в этом случае вы все еще не можете изменить фактическую ссылку в списке, но сам объект).
Причина в том, что List
вызывает делегат Action
с подписью:
delegate void Action<T>(T obj);
и здесь аргумент передается значением (это не ref
). Как и любой другой метод, вы не можете изменить входной аргумент, когда он вызывается по значению:
Код по существу эквивалентен:
void anonymous_method(string s) {
s = s + "test"; // no way to change the original `s` inside this method.
}
list.ForEach(anonymous_method);