4 votos

Autómata: ¿Cómo sustituir una cadena determinada por el nombre del archivo?

Dentro de Automator, ¿cómo puedo sustituir una cadena determinada en muchos archivos diferentes por el nombre de archivo de cada archivo?

// ACTUALIZAR

Usando un proceso "Run Shell script" soy capaz de obtener el cuerpo de un archivo de prueba (un archivo html), con la cadena correctamente reemplazada, pero el archivo modificado no se guarda. Sólo veo el contenido del archivo como texto en el panel de "resultados" de "Ejecutar Shell script". ¿Cómo lo hago?

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

enter image description here

2voto

Derek Morrison Puntos 2359

Puede utilizar un Run Shell Script acción, con un script como este:

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

con Pass input: ajustado a as arguments :

enter image description here

1voto

Esto funcionaría con varios archivos y nombres de archivo con caracteres especiales:

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

Otra opción utilizando Ruby:

ruby -i -pe '$_.gsub!("stringToBeReplaced", File.basename($FILENAME))' "$@"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X