automatizza le modifiche del testo dei file

3

Ho un sito web online che mi piacerebbe passare a un nuovo URL. Pertanto ho bisogno di modificare tutti i file html del sito Web (oltre 100 file) per aggiornare i collegamenti URL all'interno di ciascun file di questo sito Web.

Sto pensando di creare una copia off-line dei file del sito web da modificare.

È possibile utilizzare Automator OS X per - aprire ciascun file nella cartella dei file del sito Web - cerca all'interno del contenuto del file per un link URL specifico (ad esempio "www.website.com") e modificalo nel nuovo URL (ad esempio "www.website.com/old")?

Altrimenti, devo fare affidamento su un editor di testo + Automator per realizzare questo processo?

Oppure, può essere fatto usando uno script UNIX che viene eseguito nel Terminale?

Grazie per i consigli su come eseguire questo processo!

    
posta Paolo Bartoli 21.07.2017 - 14:37
fonte

2 risposte

3

Supponendo che tutti i file si trovino nella stessa cartella:

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

Se di solito modifichi i contenuti dei file del sito web, devi investire in un editor.

Sublime Text 2

Rilascia il sito Web sull'icona e verrà creato il progetto:

eseguicmdshiftFeinseriscilasostituzione:

FaiclicsulpulsanteReplaceeverificaReplace:

Siapriràecambieràtuttiifile:

BBEdit

È un'applicazione eccellente e robusta che utilizzo principalmente per modificare il codice. Trascina la cartella su BBEdit e vai su File -> Save Project e creerai un file chiamato foobar.bbprojectd :

eseguicmdshiftFeselezionailprogettoconiparametridisostituzione:

TiverràchiestodopoaverfattoclicsuReplaceAll:

SenonseisicurodelletuemodificheselezionaLeaveOpenperchéseselezioniSavetodiskèmoltodifficiletornareindietro.

Perl

EsistegiàunasoluzionesedmapotrestianchefarelostessoconPerl:

#!/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

Ci sono altri editori là fuori, ma questi sono i due che uso principalmente. Potresti anche farlo in puro AppleScript ma non hai mostrato alcun codice e terminale menzionato, quindi ho fatto il suddetto in Perl.

    
risposta data 21.07.2017 - 20:22
fonte

Leggi altre domande sui tag