Hola: Es una curiosidad. Me han pedido que copie un CD con una documentación en html. Claro, como soy curioso, le echo un vistazo: y en seguida me doy cuenta que quien lo ha hecho ha puesto enlaces absolutos, del tipo "file://D:/directorio/fichero.html" por doquier. ¿Se os ocurre alguna manera sencilla de recorrer todos los ficheros htmls del disco y cambiar las referencias absolutas a D: por relativas? Eso suponiendo que los trozos de codigo java no tengan también referencias absolutas, no lo he mirado. Es que incluso, si la persona que lo abra en windows no tiene la cedera en D: va a tener problemas... No es que vaya a cambiarlo, lo voy a copiar tal cual, pero si luego me llaman diciendo que tienen problemas, pues ya se lo que hay que hacer. -- Saludos Carlos Robinson
On Sun, 23 Jan 2005 01:07:54 +0100 (CET), Carlos E. R. wrote:
¿Se os ocurre alguna manera sencilla de recorrer todos los ficheros htmls del disco y cambiar las referencias absolutas a D: por relativas?
Si lo que quieres es cambiar el código fuente de los ficheros para que apunten a una dirección relativa, a mi no se me ocurre más que hacerlo de forma manual (abrir > buscar y reemplazar > guardar). Pero seguramente habrá otra forma de hacerlo. A ver si a alguien se le ocurre algún proceso automático (¿un script?). :-) De todas formas, si se trata de un trabajo "profesional" y vas a modificar el código de los archivos, sería una buena idea comentarlo antes con el autor de la documentación. Saludos, -- Camaleón
El 2005-01-23 a las 12:07 +0100, Camaleón escribió:
¿Se os ocurre alguna manera sencilla de recorrer todos los ficheros htmls del disco y cambiar las referencias absolutas a D: por relativas?
Si lo que quieres es cambiar el código fuente de los ficheros para que apunten a una dirección relativa, a mi no se me ocurre más que hacerlo de forma manual (abrir > buscar y reemplazar > guardar).
Si, bueno, manualmente se hacerlo, pero es tedioso.
Pero seguramente habrá otra forma de hacerlo. A ver si a alguien se le ocurre algún proceso automático (¿un script?).
:-)
Si, el metodo propuesto por Urbez, un script bash usando sed, y con find pare encontrar los ficheros, es util y ajustable a muchos casos. Me gusta. Y el propuesto por Carlos Lorenzo también es bueno, un bucle for llamando a vi alimentado por un script que le dice que hacer, también es bueno.
De todas formas, si se trata de un trabajo "profesional" y vas a modificar el código de los archivos, sería una buena idea comentarlo antes con el autor de la documentación.
¡Buff! Que lo hubiera hecho bien, si no hago el cambio no puedo verla en Linux. Pero no, no es profesional, es de andar por casa. Además, la pregunta era por precaución, por si me hacía falta. Pero lo probaré, no es la primera vez que me ha pasado algo similar. -- Saludos Carlos Robinson
El Domingo, 23 de Enero de 2005 01:07, Carlos E. R. escribió: Veamos, te he hecho un script, rápido para que lo puedas solucionar. pero de todas maneras creo que hay algun editor en SuSE que permite reemplazar en archivos... si no me equivoco... pero bueno aqui tienes, puede servirte para alguna otra vez: (Podia haberlo hecho en perl o en algun otro, pero lo he hecho en bash...) (No copies las lineas que hay con //// copia lo de dentro en un fichero que llamarás cambia.sh) (Luego aplicalo desde el directorio que te interese (donde esten los html) (con: source cambia.sh) (Suerte...) (Haz antes ... una copia de seguridad de los archivos...) ////////////////////// Fichero cambia.sh //////////////////////////// #!/bin/bash echo "Buscando archivos *.html y *.htm" dir=`find .|grep -P "\.(html|htm)$"` #aqui puedes añadir otra OR (html|htm|asp) ... origen="file://D:/directorio/" destino="" #aqui introduce el string que quieres reemplazar, por su destino... echo "Modificando archivos: reemplazar X por Y" for f in $dir do echo "->aplicando a:$f" sed -r 's#'$origen'#'$destino'#gi' $f > $f".sed" mv $f".sed" $f done echo "Finalizado..." ////////////////Final del fichero cambia.sh //////////////////////////// -- ################################################ #- Urbez Santana i Roma - #- Email: urbez@linuxupc.upc.es #- Private Web: http://linuxupc.upc.es/~urbez/ ################################################
El 2005-01-23 a las 15:08 +0100, Urbez Santana Roma escribió:
Veamos, te he hecho un script, rápido para que lo puedas solucionar. pero de todas maneras creo que hay algun editor en SuSE que permite reemplazar en archivos... si no me equivoco... pero bueno aqui tienes, puede servirte para alguna otra vez:
Ah, claro, un script con sed. Ideal. Y lo puedo modificar para otros casos parecidos. :-) Mercy! P.D.: A ver si esta vez llega sin rebotar, por enesima vez. SuSE otra vez diciendo que soy un spammer :-/ -- Saludos Carlos Robinson
Hola. El Domingo, 23 de Enero de 2005 01:07, Carlos E. R. escribió:
Hola:
Es una curiosidad.
Me han pedido que copie un CD con una documentación en html. Claro, como soy curioso, le echo un vistazo: y en seguida me doy cuenta que quien lo ha hecho ha puesto enlaces absolutos, del tipo "file://D:/directorio/fichero.html" por doquier.
Una vez por la lista inglesa surgio este mismo tema, y me lo anote, aqui te va el original en ingles I would create a script file for vi. Something like the following: :%s/This is the original line/This is the new line/g :wq If you put the above two lines in a text file named script, you could then run a command like the following: for file in *.html ; do vi -s script $file ; done This would change every file in the current directory with an html extension (assuming the script file was placed in the same directory). supongo que esto te vale.
¿Se os ocurre alguna manera sencilla de recorrer todos los ficheros htmls del disco y cambiar las referencias absolutas a D: por relativas?
Eso suponiendo que los trozos de codigo java no tengan también referencias absolutas, no lo he mirado.
Es que incluso, si la persona que lo abra en windows no tiene la cedera en D: va a tener problemas...
No es que vaya a cambiarlo, lo voy a copiar tal cual, pero si luego me llaman diciendo que tienen problemas, pues ya se lo que hay que hacer.
-- Saludos Carlos Robinson
-- Un Saludo. Carlos Lorenzo Matés
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2005-01-23 a las 16:25 +0100, Carlos Lorenzo Matés escribió:
Una vez por la lista inglesa surgio este mismo tema, y me lo anote, aqui te va el original en ingles
A ver.
I would create a script file for vi. Something like the following: :%s/This is the original line/This is the new line/g :wq
If you put the above two lines in a text file named script, you could then run a command like the following:
for file in *.html ; do vi -s script $file ; done
This would change every file in the current directory with an html extension (assuming the script file was placed in the same directory).
supongo que esto te vale.
También, es un metodo interesante, con vi alimentado por un script. Puede que sed sea más rápido en este caso, pero vi es posiblemente más ajustable. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFB9FGltTMYHG2NR9URAqYKAJ95mrYex/P5UJkEurYRd7Xo5jWdmgCeKsA/ SuOQJM0luqoBPkiK9vplBf4= =B0OE -----END PGP SIGNATURE-----
participants (4)
-
Camaleón
-
Carlos E. R.
-
Carlos Lorenzo Matés
-
Urbez Santana Roma