[l-linux] [p] Apache - usando extensiones diferentes a html
Jose Rey
jrey at linuxsis.net
Wed Dec 17 20:37:05 CST 2003
Jean Pierre Rupp wrote:
> Lo traté de correr y se me quedo en el sitio, no hace nada y pareciera
> estar corriendo.
Si hay muchos archivos puede ser que find esté haciendo su trabajo, pero
si son muchisimos, tambien te puedes encontrar con una limitación de
la cantidad de argumentos que puedas pasar a un programa, además si find
no encuentra ningún archivo, se queda esperando del stdin.
Pero ya que estamos emocionados escribiendo scripts, pueden intentar:
$ perl -i -pe 's{(\s+href=")([^"]+?)\.asp"}{$1$2.html"}gi;
if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename $ARGV,$n }' \
`find . -name "*.asp"`
Este se cuida un poco más y solo substituye los HREF, sin embargo
también substituye cualquier enlace externo, que probablemente no
queremos que se rompa, para ello pueden probar evitando los URLs absolutos:
$ perl -i -pe 's{(\s+href=")(?!http://)([^"]+?)\.asp"}{$1$2.html"}gi;
if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename $ARGV,$n }' \
`find . -name "*.asp"`
man perlre
:-)
Saludos
Jose Luis Rey
>
> El mié, 17-12-2003 a las 14:42, Ernesto Hernandez-Novich escribió:
>
>>On Wed, 17 Dec 2003, Alvaro Jesus Hernandez Arteaga wrote:
>>
>>>El Mié 17 Dic 2003 11:02, Jose Luis Bazo escribió:
>>>
>>>>quiero que el apache tome un *.asp como si fuese un *.html
>>>>y no me acuerdo en que parte del httpd.conf le agrego esa extencion
para q
>>>>la lea como si fuese un html comun y silvestre...
>>>>un helping plis!!!!
>>>
>>>podrias intentar hacer un script para renombrar todos esos archivos,
>>>posteriormente utilizando awk/sed hacer una poderosa lÃnea de shell
para
>>>buscar dentro de los archivos el patron ".asp" y cambiarlo por ".html"
>>>
>>>bien es cierto que puedes hacer un cambio en el archivo httpd.conf
(o como lo
>>>llame la distribucion que uses) pero no serà ni elegante ni lo correcto
>>>
>>>âThere is more Unix-nature in one line of shell script than there
is in ten
>>>thousand lines of C.â
>>>Master Foo
>>
>>There is more Unix-nature in one line of Perl than there is in
>>ten thousand lines of whatever-other-puny-language :-)
>>
>>$ perl -i -pe 's/\.asp"/\.html"/gi;
>> if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename
$ARGV,$n }'
>> `find . -name *.asp`
>>
>>Asumiendo que los href terminan en " como lo indica el standard W3C para
>>HTML. La expresión regular puede sofisticarse en caso de ser necesario,
>>eso es lo de menos...
>>
>>Quiero hacer especial énfasis en el idioma
>>
>>($x = $y) =~ s/.../.../
>>
>>equivalente a
>>
>>$x = $y
>>$x =~ s/.../.../
>>
>>pero en una sola línea.
>>
>>Así mismo, el 'eof' permite verificar cada una de las terminaciones
internas
>>del ciclo implícito que se construye para procesar cada archivo (man
perlrun).
>>
>>De modo que en una sola línea, editar y renombrar un número arbitrario
>>de archivos identificados por sus nombres absolutos. Por cierto, el uso
>>de find puede ser sustituido si se usa el módulo File::Find de Perl,
>>pero eso implica editar un archivo para hacer el script, hacer unas
>>subrutinas y eso tarda mucho (y menos mal que no es orientado a objetos
>>para algo tan simple ;-)
------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------
More information about the caracas-pm
mailing list