Je pense que tout entasser dans un répertoire plat va causer encore plus de problèmes, sans oublier la folie que ce sera d'itérer à travers les pistes. À mon avis, votre stéréo doit avoir une notion de sauter une piste, et de sortir du dossier actuel une fois que vous en avez fini avec celui-ci? La randomisation rendrait également essentiellement impossible de trouver la chanson que vous voulez.
Sans connaissance de votre stéréo, opter pour un compromis de seulement 1 sous-répertoire, peut-être deux, est probablement (espérons-le) une solution assez bonne.
Avec un seul répertoire, vous voudriez probablement des dossiers qui sont : Nom de l'artiste - Nom de l'album
avec des noms de pistes de 1-01 - Titre…
pour des albums à plusieurs disques et 01 - Titre
pour ceux sans. Sinon, vous pouvez simplement utiliser la dénomination de version d'album à plusieurs disques pour tout, à condition que "pas de numéro de disque" donne comme résultat 1. (Ou 0, un zéro initial est bien, mais un -
initial n'est probablement pas approprié quelque part.)
Cela est possible mais terriblement compliqué à faire dans un script seul. Il existe sûrement des logiciels pour vous aider à gérer cela, je ne sais pas quel est ce logiciel. Vous devez (1) créer les sous-répertoires, (2) copier les fichiers à leur nouvel emplacement approprié dans les sous-répertoires nouvellement créés, et (3) les renommer avec l'étiquette du disque afin de ne pas mélanger les pistes du Disque 1, du Disque 2 et des pistes du Disque n qui ne sont par ailleurs pas différenciées.
Je peux m'en approcher, et cela fonctionne pour moi car je nomme déjà mes fichiers avec des formats Disquenr-Pistenuméro - Titre
lorsque plusieurs disques sont présents, malgré qu'ils soient aussi organisés en sous-dossiers:
find . -type f |awk 'BEGIN {FS="/"}{ printf "mkdir \"/Plat/%s - %s\"; cp \"%s\" \"/Plat/%s - %s/\"", $2, $3, $0, $2, $3; print ""}'
mkdir "/Plat/DDR - DDRMAX"; cp "./DDR/DDRMAX/Disc 1/1-01 Lovin' You (Rob Searle club mix).m4a" "/Plat/DDR - DDRMAX/"
mkdir "/Plat/DDR - DDRMAX"; cp "./DDR/DDRMAX/Disc 1/1-02 Somewhere Over the Rainbow.m4a" "/Plat/DDR - DDRMAX/"
mkdir "/Plat/DDR - DDRMAX"; cp "./DDR/DDRMAX/Disc 2/2-01 Select.m4a" "/Plat/DDR - DDRMAX/"
mkdir "/Plat/DDR - DDRMAX"; cp "./DDR/DDRMAX/Disc 2/2-02 WWW.Blonde Girl (Momo mix).m4a" "/Plat/DDR - DDRMAX/"
mkdir "/Plat/Metallica - Load"; cp "./Metallica/Load/01 Ain't My Bitch.m4a" "/Plat/Metallica - Load/"
mkdir "/Plat/Metallica - Load"; cp "./Metallica/Load/02 2 X 4.m4a" "/Plat/Metallica - Load/"
Notez que j'ai pris quelques libertés avec la sortie comme réorganiser ma sortie pour la lister de manière plus lisible pour prouver sa fonction.
Vous ajouteriez alors | sh
à la fin de cette commande pour qu'elle effectue le travail en exécutant les commandes listées ici. Cette sortie ne fait que d'afficher une chaîne pour vérifier que les commandes que vous voulez exécuter agiraient comme vous le souhaitez.
Cette solution signifie que vous obtiendrez une tonne d'erreurs de "dossier déjà existant", mais ce ne sont qu'une nuisance et n'arrêtent pas le processus.
Faisable, oui. Sainement? Ehhhhhhhhhhhhhhhhhhhhhh. Dépend surtout de la rigueur exacte et de l'organisation de votre nommage de fichiers source.