Powershell replace text in files and recurse subdirectories
I needed to go through every file in a folder and all of its sub directories and open each file and replace a given string. This is what I finally came up with. I'm sure that this can be improved on though...
function ReplaceText($fileInfo)
{
if( $_.GetType().Name -ne 'FileInfo')
{
# i.e. reject DirectoryInfo and other types
return
}
$old = 'my old text'
$new = 'my new text'
(Get-Content $fileInfo.FullName) | % {$_ -replace $old, $new} | Set-Content -path $fileInfo.FullName
"Processed: " + $fileInfo.FullName
}
$loc = 'c:\my file\location'
cd $loc
$files = Get-ChildItem . -recurse
$files | % { ReplaceText( $_ ) }
Filed under: Powershell