Hello tout le monde
J’ai un disque dur externe avec pleins de fichiers audio en flac rangés comme ceci :
Mes Fichiers
├── Artiste-1
│ ├── Album-1
│ │ └── musique
│ └── Album-2
│ └── musique
└── Artiste-2
├── Album-1
│ └── musique
└── Album-2
└── musique
Le problème c’est que les musiques sont en flac, et je compte les garder avec cette qualité. Ainsi quand je veut les mettre sur mon téléphone je dois aller dans chaque dossier puis convertir les musiques et ça prend beaucoup de temps alors qu’on pourrait le faire en une fois avec un script Bash et en gardant la même arborescence des dossiers.
C’est ce que j’ai fait ! Et ça marche ! Dans une certaine mesure…
En effet lors de la copie de l’arborescence, sur certains de mes dossiers il y a un bug : le nom du dossier s’écrit en partie et cela, semble à première vu ne pas suivre une quelconque logique (ce qui est impossible en informatique)
Par exemple au lieu d’avoir un dossier "Pink_Floyd" il créé un dossier "Floyd" ou "Loyd". Parfois il crée bien le dossier "Pink_Floyd" mais aussi le dossier "Loyd" en voulant mettre les musiques dans ce dernier.
Voici mon script Bash au cas ou vous arrivez à trouver ce qui ne vas pas
#!/bin/bash
# Changer la définition du changement de ligne
IFS=$'\n'
# Definir le format voulu par l'utilisateur, et ses valeurs par défaut
format=${1:-opus} bitrate=${2:-256k} format_start=${3:-flac}
# créé un fichier temporaire pour boucle (et debug)
find -type d > .File_parameter;
# boucler sur .File_Parameter
while read fdir;
do
# créer le nom de la nouvelle arborescence
new_dir="$(echo $PWD)_$format/$fdir";
# la mettre en oeuvre
mkdir -p $new_dir;
for i in $fdir/*.$format_start;
do
# créer le nom du nouveau fichier pour ffmpeg
new_file="${i%.$format_start}.$format";
#convertir et masquer les lignes ffmpeg
ffmpeg -i "${i%.$format_start}.$format_start" -ab $bitrate $new_file >/dev/null 2>&1;
mv $new_file $new_dir;
done;
echo "$new_dir à été copié et converti";
done < .File_parameter;
rm .File_parameter;
En tout cas je n’y arrive plus, depuis le début de cet aprem je suis dessus et je n’arrive pas à trouver l’erreur. Mais j’ai une hypothèse : c’est que Bash compte certains caractères comme des caractère spéciaux.
Merci d’avance pour votre aide !