0 votos

Crear subcarpetas, mover archivos

Estoy intentando organizar un montón de audiolibros y me gustaría automatizar parte del trabajo. Tengo conocimientos muy básicos de Applescript, pero normalmente puedo encontrar un scriptlet en línea para hacer el trabajo que quiero. Este todavía no lo he conseguido. Mis archivos son así:

Libros/Autor1/Libro.mp3

Libros/Autor2 - Libro.mp3

Libros/Autor3/Libro.mp3

Lo que quiero hacer es seleccionar los libros que no están en una subcarpeta de Autor, crear una subcarpeta con el nombre del Autor, renombrar el archivo a sólo el título del libro y finalmente mover el libro a la carpeta recién creada. He probado el siguiente script y funciona en parte. Lo hace todo excepto mover el archivo al final. Me da un error que dice: "error" "El buscador obtuvo un error: Handler no puede manejar objetos de esta clase" número -10010". ¿Hay alguna forma de cambiarlo para que funcione? Si sirve de algo, los archivos están en una unidad adjunta (smb://NAS._smb._tcp-local/Audiobooks/Books). Probablemente haya errores de sintaxis para los puristas, pero mientras funcione, no soy exigente :)

tell application "Finder"
    set selectedFiles to selection as alias list

    set containingFolder to container of item 1 of selectedFiles as alias

    repeat with f from 1 to count of selectedFiles
        set thisItem to item f of selectedFiles
        set oldName to thisItem's name

        set newFolderName to text 1 thru ((get offset of "-" in oldName) - 2) of oldName
        set newFileName to text ((get offset of "-" in oldName) + 2) thru end of oldName

        set name of thisItem to newFileName

        move newFileName to (make new folder at containingFolder with properties {name:newFolderName})
    end repeat
end tell

0voto

Yo usaría la cáscara en tal caso.

Abra el Terminal e introduzca cd path/to/Audiobooks/Books y, a continuación, ejecute

find . -type f -name '* - *' -maxdepth 1 \
    -exec bash -c 'mkdir -p "${1%% - *}"; mv "$1" "${1%% - *}/${1#* - }"' _ {} \;

PD: Esto supone que quieres mover todos los archivos de esa carpeta y que Autor y Título están siempre separados por - .


Esto utiliza find para encontrar todas las coincidencias ( -name '* - *' ) ( -type f ) en el directorio actual ( -maxdepth 1 ) y luego ejecuta el bash ... \; parte en cada uno de ellos. La parte ejecutada es básicamente un bash script que obtiene el nombre del archivo en $1 y luego utiliza la sustitución de texto para extraer el autor y el título ( ${1%% - *} corta la parte que comienza con - , ${1#* - } cortes de la parte que termina con él).

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