2016-03-25 4 views
0

Весьма удобно использовать оболочку Linux для добавления некоторого содержимого в файл, используя операции с линиями трубопровода и потоковые операции.Как вставить одну строку в каждый файл?

Но в PowerShell конвейер используется на уровне объекта, а не на уровне файла. Затем, как я могу, например, вставить строку «helloworld» в список файлов, чтобы стать их первой строкой?

ответ

2

Это не то, что тривиально, но вы можете сделать это:

Get-ChildItem | foreach {$a = Get-Content $_ 
        Set-Content $_ -Value "hi", $a} 

Тхо быть честным я думаю, что он соответствует определению трубопровода.

+1

'Get-ChildItem | ForEach-Object {$ ('hi'; Get-Content $ _) | Set-Content $ _} ', или более короткий' ls | % {$ ('hi'; gc $ _) | sc $ _} '. Это более или менее то же самое, что и в оболочке Linux. –

+0

Yup даже лучше, чем временная переменная. – Olegp

+0

Помните, что даже если вам не нужна явная переменная, вы все еще читаете весь файл в памяти, прежде чем записывать его обратно на диск. –

Смежные вопросы