1 votos

Cambiar el nombre del archivo por lotes eliminando los primeros 6 caracteres y añadiéndolos detrás del nombre del archivo

¿hay alguna forma de cambiar el nombre de un archivo automáticamente con Automator, eliminando los primeros 6 caracteres y moviéndolos al final del nombre del archivo (y añadiendo un espacio antes)?

Ejemplo 20-10-03 Prueba.zip

Cambia el nombre a: Prueba 20-10-03.zip

Gracias.

2voto

user3439894 Puntos 5883

Sí, una de las formas de hacerlo en Automatizador es mediante el uso de un Ejecutar Shell script acción con el ejemplo bash script código que se muestra más abajo.

Puede crear un Automatizador Flujo de trabajo o Servicio/Acción Rápida el flujo de trabajo.

Si hace sólo un Flujo de trabajo entonces tendrá que añadir un Archivos y carpetas acción Por ejemplo Obtenga los artículos seleccionados del buscador o Obtener los elementos del buscador especificados y, a continuación, añadir un Ejecutar Shell script acción .

Si hace un Servicio/Acción Rápida entonces sólo se necesita un Ejecutar Shell script acción .

Si elige un Servicio/Acción Rápida y luego configurarlo para usar archivos y carpetas en Buscador .

Para el Ejecutar Shell script acción , tienen su ajustes configurado como:

  • Shell: /bin/bash
  • Pase de entrada: como argumentos
  • Sustituir el código por defecto de la Ejecutar Shell script acción con el ejemplo bash script código .

El ejemplo bash script código utiliza expansión de los parámetros de la cáscara para cortar el nombre de ruta completamente calificado del archivo(s) que se le pasó en las piezas necesarias y luego cambia el nombre de el/los archivo(s) utilizando el mv comando con el -n opción que no sobrescribirá un archivo existente, basándose en el valores de los trozos de nombre de ruta completamente calificado .

Como codificado utiliza un regex para actuar sólo en archivos que comienza con dos dígitos , seguido de un dash , seguido de dos dígitos , seguido de un dash , seguido de dos dígitos , seguido de un espacio , seguido de caracteres adicionales y un extensión del archivo Por ejemplo: 20-10-03 Pruebas.zip

Ejemplo bash script código :

    # f = fully qualified pathname
    # d = directory pathname
    # fn = filename with extension
    # n = filename without extension
    # e = filename extension
    # p = filename prefix e.g. '20-10-03'
    # s = filename suffix (filename without prefix, space, and extension)

for f in "$@"
do
    [ -f "${f}" ] || continue
    d="${f%/*}"
    fn="${f##*/}"
    [[ ${fn} =~ ^[0-9]{2}-[0-9]{2}-[0-9]{2}[[:space:]].*\..* ]] || continue
    n="${fn%.*}"
    e="${fn##*.}"
    p="${n%${n#????????}}"
    s="${n:9}"
    [ -n "${s}" ] || continue
    mv -n "${f}" "${d}/${s} ${p}.${e}"
done

La salida de la cual sería, por ejemplo: Pruebas 20-10-03.zip


Nota: El <em>ejemplo </em><strong>bash script </strong><em>código </em>es sólo eso y no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado.

-1voto

Vader Puntos 323

Este respuesta puede ser lo que buscas. Necesitas regex, o un shell script usando regex trabajando con Automator.

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