0 votes

Créer des sous-dossiers, déplacer des fichiers

J'essaie d'organiser un grand nombre de livres audio et j'aimerais automatiser une partie du travail. Je n'ai qu'une connaissance très basique d'Applescript, mais je peux généralement trouver un scriptlet en ligne pour faire le travail que je veux. Je n'ai pas encore réussi à faire fonctionner celui-ci. Mes fichiers se présentent comme suit :

Livres/Auteur1/Livre.mp3

Books/Author2 - Book.mp3

Livres/Author3/Livre.mp3

Ce que je veux faire, c'est sélectionner les livres qui ne sont pas dans un sous-dossier Auteur, créer un sous-dossier avec le nom de l'auteur, renommer le fichier avec le seul titre du livre et enfin déplacer le livre dans le dossier nouvellement créé. J'ai essayé le script suivant et il fonctionne en partie. Il fait tout sauf déplacer le fichier à la fin. Je reçois un message d'erreur qui dit "error "Finder got an error : Handler can't handle objects of this class." nombre -10010". Existe-t-il un moyen de le modifier pour qu'il fonctionne ? Si cela fait une différence, les fichiers sont sur un lecteur attaché (smb://NAS._smb._tcp-local/Audiobooks/Books). Il y a probablement des erreurs de syntaxe pour les puristes, mais tant que ça marche, je ne suis pas difficile :)

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

nohillside Points 82672

Dans ce cas, j'utiliserais la coquille.

Ouvrez le terminal et entrez cd path/to/Audiobooks/Books puis exécutez

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

PS : Cela suppose que vous souhaitiez déplacer tous les fichiers de ce dossier et que l'auteur et le titre soient toujours séparés par des caractères - .


Il s'agit d'utiliser find pour trouver toutes les données correspondantes ( -name '* - *' ) ( -type f ) dans le répertoire actuel ( -maxdepth 1 ) et exécute ensuite la commande bash ... \; sur chacun d'entre eux. La partie exécutée est essentiellement un bash script qui récupère le nom de fichier en $1 et utilise ensuite la substitution de texte pour extraire l'auteur et le titre ( ${1%% - *} coupe la partie commençant par - , ${1#* - } de la partie se terminant par ce terme).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X