Automator: come sostituire una particolare stringa con il nome file?

4

All'interno di Automator, come posso sostituire una particolare stringa in molti file diversi con il nome file di ciascun file?

// UPDATE

Usando un processo "Esegui script di shell" sono in grado di ottenere il corpo di un file di test (un file html), con la stringa correttamente sostituita, ma il file modificato non viene salvato. Ho appena visto il contenuto del file come testo nel riquadro "risultati" di "Esegui script shell". Come faccio a:

a) Ottieni il nome del file invece dell'intero percorso file? b) Salva il file modificato? Ho bisogno di un altro passaggio quando uso sed?

    
posta Ben 27.03.2013 - 01:02
fonte

2 risposte

2

Puoi utilizzare un'azione Run Shell Script , con uno script come questo:

basename=${1##*/}
tmp='mktemp -t $$'
sed -e "s/STRING_TO_BE_REPLACED/$basename/g" "$1" > $tmp && mv $tmp "$1"

con Pass input: impostato su as arguments :

    
risposta data 27.03.2013 - 08:46
fonte
1

Funzionerebbe con più file e nomi di file con caratteri speciali:

for f in "$@"; do
    [[ ! -f $f ]] && continue
    text=$(cat "$f")
    printf %s "${text//stringToBeReplaced/${f##*/}}" > "$f"
done

Un'altra opzione che utilizza Ruby:

ruby -i -pe '$_.gsub!("stringToBeReplaced", File.basename($FILENAME))' "$@"
    
risposta data 30.03.2013 - 01:09
fonte

Leggi altre domande sui tag