Как с помощью Powershell найти в директории файлы по маске и изменить в них определённый текст?
1. получим список файлов.
есть два способа : Get-ChildItem d:\test -Recurse -Filter *img_*.svg[IO.Directory]::EnumerateFiles('d:\test\','*img_*.svg','AllDirectories')
второй, в вашем случае, вроде должен работать быстрее, поскольку возвращает не объекты FileInfo а только путь файла.
Дальше сразу подаем на конвейер и обрабатываем так как вам надо.[IO.Directory]::EnumerateFiles('d:\test\','*img_*.svg','AllDirectories') | foreach {(Get-Content $_ -raw) -replace '.png','.jpg' | Set-Content $_) }
вроде так.
вообще не имел дела с таким объемом файлов, и, скорее всего, все таки будет заниматься достаточно много памяти.
Но проверять - вам )
Интересный вопрос, с помощью ПауэрШел и Баша можно сделать это полюбому.
Но еще один из способов, может и не самый лучший, но не сильно сложный, это воспользоваться к примеру TotalCommander, войти в папку нажную, нажать комбинацию клавиш, которая раскрывает рекурсивно все папки и отображает все файлы в этой папке - просто будет перед вами один список (ctrl+b вроде). Потом с помощью макси выбрать файлы с img_ и открывая каждый файл в текстовом редакторе на правку просто автозаменой сделать замену пнг на джпег (типа ctrl+h).
Если таких файлов не много, то это быстро сделать. Слово не много - относительно, сотню файлов можно сделать за пару минут реально.
Но если подумать и написать скрипт на шеле, как и хотите - будет быстрее, но время будет потрачено на написание скрипта.