J'ai un dossier de musique et le contenu ressemble à ceci:
La musique -Artiste -Song1.mp3 -AlbumA -Song2.mp3 -Song2.m4a -AlbumB -Song1.mp3 -Song2.mp3 -Song3.mp3 -Album C -Song1.mp3 -Song1.jpg -SomeFolder1 -Song1.mp3 -ArtisteB -Song1.mp3 -ArtisteC -Song1.mp3 -Song2.mp3 -Song3.mp3 -SomeFolder2 -Song1.jpg -Song2.jpg -SomeFolder3
Je cherche une sortie comme celle-ci:
ArtistA / Song1.mp3 ArtisteA / AlbumA / Song2.mp3 ArtisteA / AlbumC / Song1.mp3 ArtistA / AlbumC / SomeFolder1 / Song1.mp3 ArtistB / Song1.mp3
Donc, je ne veux pas de répertoires avec un seul fichier, je veux des répertoires avec un seul mp3 - indépendamment des sous-répertoires ou autres fichiers. Je ne veux pas non plus de répertoires vides, ni de répertoires contenant plus d’un mp3.
Je ne suis pas opposé à un script shell pour Linux. Je ne veux pas compiler un programme sur l'un ou l'autre système d'exploitation, cependant.
J'ai essayé:
find . -type d -exec sh -c 'set -- "$0"/*.mp3; [ $# -le 1 ]' {} \; -print
mais ça me donne cette sortie:
. ./ArtistB ./Artiste ./ArtistA/AlbumA ./ArtistA/AlbumC ./ArtistA/AlbumC/SomeFolder1 ./ArtistC/SomeFolder2 ./ArtistC/SomeFolder3
ce qui est proche, mais pas exactement ce que je veux. Il y a deux dossiers vides et aucun nom de fichier.
Voici une réponse:
la source
find
avececho "$parent"/*.mp3
.