Automator: ¿Cómo reemplazar una cadena en particular con el nombre de archivo?

4

Dentro de Automator, ¿cómo puedo reemplazar una cadena en particular en muchos archivos diferentes con el nombre de archivo de cada archivo?

// ACTUALIZACIÓN

Al usar el proceso "Ejecutar shell script", puedo obtener el cuerpo de un archivo de prueba (un archivo html), con la cadena correctamente reemplazada, pero el archivo modificado no se está guardando. Acabo de ver el contenido del archivo como texto en el panel de "resultados" de "Ejecutar Shell Script". ¿Cómo puedo:

a) ¿Obtener el nombre del archivo en lugar de la ruta de archivo completa? b) ¿Guardar el archivo modificado? ¿Necesito otro paso cuando uso sed?

    
pregunta Ben 27.03.2013 - 01:02

2 respuestas

2

Puedes usar una acción Run Shell Script , con una secuencia de comandos como esta:

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

con Pass input: establecido en as arguments :

    
respondido por el Riccardo Marotti 27.03.2013 - 08:46
1

Esto funcionaría con múltiples archivos y nombres de archivos con caracteres especiales:

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

Otra opción usando Ruby:

ruby -i -pe '$_.gsub!("stringToBeReplaced", File.basename($FILENAME))' "$@"
    
respondido por el user495470 30.03.2013 - 01:09

Lea otras preguntas en las etiquetas