powershell
get-childitem c:\directory -recurse -file | foreach {$file=get-content $_ ; [System.IO.File]::WriteAllLines($_, $File, $(New-Object System.Text.UTF8Encoding $False))}
К слову, этот кусочек кода является отличным примером того как MS радеет за всех нас: При сохранении информации в UTF соответствующими коммандлетами (Out-File, Set-Content и другими) powershell сохраняет только в UTF с BOM. Для сохранения без BOM приходится использовать вышеуказанную конструкцию.
Для линуксов более родным средством является вышеуказанный iconv