He estado tratando de codificar una secuencia de comandos Perl para sustituir texto en todos los archivos fuente de mi proyecto. Estoy en la necesidad de algo así como:¿Hay una manera simple de hacer la sustitución de texto a granel en su lugar?
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" *.{cs,aspx,ascx}
Pero que analiza todos los archivos de un directorio recursivamente .
acabo comenzó una secuencia de comandos:
use File::Find::Rule;
use strict;
my @files = (File::Find::Rule->file()->name('*.cs','*.aspx','*.ascx')->in('.'));
foreach my $f (@files){
if ($f =~ s/thisgoesout/thisgoesin/gi) {
# In-place file editing, or something like that
}
}
Pero ahora estoy atascado. ¿Existe una manera simple de editar todos los archivos en su lugar usando Perl?
Tenga en cuenta que no necesito guardar una copia de cada archivo modificado; Soy tengo 'em all = subversioned)
actualización: He intentado esto en Cygwin,
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" {*,*/*,*/*/*}.{cs,aspx,ascx
pero parece que mi lista de argumentos explotó al tamaño máximo permitido. De hecho, estoy recibiendo errores muy extraños en Cygwin ...
Probablemente debería tener en cuenta que está ejecutando Windows. –