Copier les fichiers.mp3 d'une playlist.m3u vers un autre média

$ cat list.m3u | sed -e "/^#.*$/d" -e "s/\\r$//" -e 's/[^*]*/"&"/g' | xargs -i echo cp "{}" /media/usb0/lazicaOlaf/

Explication

Structure d'un fichier m3u

#EXTM3U
#EXTINF:246,1 idtag informations
/home/user/musique/album/titre1.mp3
#EXTINF:229,2 idtag informations
/home/user/musique de ma soeur/titre2.mp3
...

Supprimer les lignes commençant par un [#]

cat playlist.m3u | sed -e "/^#.*$/d"
/home/user/musique/album/titre1.mp3
/home/user/musique de ma soeur/titre2.mp3

Ceci semble convenir quoi que plus loin avec la commande xargs les retours chariot (\r) vont apparaitre et poser problème.

Supprimer les retours chariot \r

cat playlist.m3u | sed -e "/^#.*$/d" -e "s/\\r$//"
/home/user/musique/album/titre1.mp3
/home/user/musique de ma soeur/titre2.mp3

Entourer chaque chaine de guillemets

cat playlist.m3u | sed -e "/^#.*$/d" -e "s/\\r$//" -e 's/[^*]*/"&"/g' 
"/home/user/musique/album/titre1.mp3"
"/home/user/musique de ma soeur/titre2.mp3"

Enfin on exécute la copie vers un répertoire avec xargs

cat playlist.m3u | sed -e "/^#.*$/d" -e "s/\\r$//" -e 's/[^*]*/"&"/g' | xargs -i cp "{}" /media/usb0/lazicatoto/

Faire des tests

Il est possible de faire des tests en ajoutant echo après la dernière option de xargs

cat playlist.m3u | sed -e "/^#.*$/d" -e "s/\\r$//" -e 's/[^*]*/"&"/g' | xargs -i echo cp "{}" /media/usb0/lazicaOlaf/

cp /home/user/musique/album/titre1.mp3
cp /home/user/musique de ma soeur/titre2.mp3
^