automatizar las ediciones de texto del archivo

3

Tengo un sitio web en línea que me gustaría mover a una nueva URL. Por lo tanto, necesito editar todos los archivos HTML del sitio web (más de 100 archivos) para actualizar los enlaces URL dentro de cada archivo de este sitio web.

Estoy pensando en hacer una copia fuera de línea de los archivos del sitio web para editar.

¿Es posible utilizar Automator OS X para - abre cada archivo en la carpeta de archivos del sitio web - busque dentro del contenido del archivo un enlace URL específico (diga "www.website.com") y cámbielo a la nueva URL (diga "www.website.com/old")?

De lo contrario, ¿necesito confiar en un editor de texto + Automator para realizar este proceso?

O, ¿se puede hacer usando un script de UNIX que se ejecuta en la Terminal?

¡Gracias por cualquier consejo sobre cómo realizar este proceso!

    
pregunta Paolo Bartoli 21.07.2017 - 14:37

2 respuestas

3

Suponiendo que todos los archivos están en la misma carpeta:

mkdir new
for i in *.html; do
    sed 's|website.com|website.com/old|g' "$i" > "new/$i"
done
    
respondido por el nohillside 21.07.2017 - 17:02
2

Si está editando comúnmente los contenidos de los archivos del sitio web, debería invertir en un editor.

Sublime Text 2

Coloca el sitio web en el ícono y construirá el proyecto:

ejecutecmdshiftFeingreseelreemplazo:

HazclicenelbotónReplaceyverificaelReplace:

Seabriráycambiarátodoslosarchivos:

BBEdit

Es una aplicación excelente y robusta que uso principalmente para editar código. Arrastre y suelte la carpeta en BBEdit y vaya a File -> Save Project y se creará un archivo llamado foobar.bbprojectd :

ejecutecmdshiftFyseleccioneelproyectoconlosparámetrosdereemplazo:

LepreguntarádespuésdehacerclicenReplaceAll:

Sinoestásegurodesuscambios,seleccioneLeaveOpenporquesiseleccionaSavetodiskesmuydifícilvolver.

Perl

YaexisteunasoluciónsedperotambiénpuedeshacerlomismoconPerl:

#!/bin/bashDIR="/Users/vader/desktop/test"
NEW="$DIR/new"

if [ ! -e "$DIR/new" ]; then 
    mkdir -p new
    echo "made folder new"
else
    echo "folder exists"
fi

for htmlfile in $(ls "$DIR"/*.html); do
    TEMPFILE="$htmlfile.$$"
    htmlbase=$(basename $htmlfile)
    echo "Working on "$htmlbase
    perl -pe 's|www.website.com|www.website.com\/old|g' "$htmlfile" > $TEMPFILE && mv $TEMPFILE "$NEW/$htmlbase"
done

Hay otros editores por ahí, pero estos son los dos que uso principalmente. También puedes hacer esto en AppleScript puro, pero no has mostrado ningún código ni mencionado el terminal, así que hice lo anterior en Perl.

    
respondido por el ʀ2ᴅ2 21.07.2017 - 20:22

Lea otras preguntas en las etiquetas