PowerShell: cómo reemplazar texto específico en varios archivos
Puede utilizar la siguiente sintaxis en PowerShell para reemplazar texto específico en varios archivos:
Get-ChildItem -File -Recurse | ForEach-Object {
(Get-Content $_) -replace "Mavs","Mavericks" | Set-Content $_.fullname
}
Este ejemplo particular reemplazará el texto "Mavs" por "Mavericks" en cada archivo del directorio actual.
Esto es lo que hacen los distintos comandos:
- Get-ChildItem -File -Recurse: recupera todos los archivos de forma recursiva desde el directorio actual
- ForEach-Object: especifica una acción a realizar en cada archivo
- Get-Content $_: recupera el contenido del archivo actual
- -replace: especifica un patrón antiguo para reemplazar con un patrón nuevo.
- Set-Content $_.fullname: actualiza el contenido del archivo actual después de que se haya realizado el reemplazo
El siguiente ejemplo muestra cómo utilizar esta sintaxis en la práctica.
Ejemplo: Cómo reemplazar texto específico en varios archivos en PowerShell
Supongamos que nuestro directorio actual contiene los siguientes tres archivos de texto:
- equipos1.txt
- equipos2.txt
- equipos3.txt
Podemos utilizar el cmdlet Get-Content para ver el contenido de cada uno de estos archivos:
Cada uno de los archivos contiene los nombres de varios equipos de baloncesto.
Supongamos que queremos reemplazar el nombre del equipo "Mavs" por "Mavericks" en cada archivo.
Podemos utilizar la siguiente sintaxis para hacerlo:
Get-ChildItem -File -Recurse | ForEach-Object {
(Get-Content $_) -replace "Mavs","Mavericks" | Set-Content $_.fullname
}La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:
Observe que cuando usamos el cmdlet Get-Content para ver el contenido actualizado de cada archivo, podemos ver que el patrón "Mavs" ha sido reemplazado por "Mavericks" en cada archivo que contenía el patrón.
No dudes en reemplazar "Mavs" con cualquier otro patrón que quieras buscar en tus propios archivos.
Nota: Puede encontrar la documentación completa para el operador -replace en PowerShell aquí.

