Bonjour
Dans le contenu du fichier que tu donnes en exemple
il y a un caractère de tabulation (hexa 09) collé à la fin du nom d'extension.
Est-ce qu'il y a toujours ce caractère de tabulation à la fin du nom du fichier ?
michel@debT450:~$ printf '%s' "file:///home/machin/truc/fichier.flac " | hd
00000000 66 69 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f 6d 61 63 |file:///home/mac|
00000010 68 69 6e 2f 74 72 75 63 2f 66 69 63 68 69 65 72 |hin/truc/fichier|
00000020 2e 66 6c 61 63 09 |.flac.|
00000026
michel@debT450:~$
Si NON, dans les lignes de commande
sed il vaudrait mieux ajouter un caractère dollar après
$ancienneExt dans les propositions ci-dessous.
=======
Pour ne remplacer que l'extension :
nomFichPlayListExaile="jeNeSaisPasQuelNom.listeExaile"
ancienneExt="flac"
nouvelleExt="ogg"
sed -i.sauv "/^file:\/\//s|$ancienneExt|$nouvelleExt|" $nomFichPlayListExaile
=======
Pour ne remplacer que le chemin :
nomFichPlayListExaile="jeNeSaisPasQuelNom.listeExaile"
ancienchemin="/home/machin/truc/"
nouveauchemin="/home/nouveauMachin/nouveauTruc/"
sed -i.sauv "/^file:\/\//|$ancienchemin|$nouveauchemin|" $nomFichPlayListExaile
=======
Pour remplacer le chemin
ET l'extension :
nomFichPlayListExaile="jeNeSaisPasQuelNom.listeExaile"
ancienchemin="/home/machin/truc/"
nouveauchemin="/home/nouveauMachin/nouveauTruc/"
ancienneExt="flac"
nouvelleExt="ogg"
sed -i.sauv "/^file:\/\//s|$ancienneExt|$nouvelleExt|;|$ancienchemin|$nouveauchemin|" $nomFichPlayListExaile
=======
# Pour faire appliquer ça sur tous les fichiers dont le nom d'extension est
.listeExaile
# et qui sont contenus dans
/chemin/du/repertoire/ :
ancienchemin="/home/machin/truc/"
nouveauchemin="/home/nouveauMachin/nouveauTruc/"
ancienneExt="flac"
nouvelleExt="ogg"
shopt -s nullglob
for fich in /chemin/du/repertoire/*.listeExaile; do
sed -i.sauv "/^file:\/\//s|$ancienneExt|$nouvelleExt|;|$ancienchemin|$nouveauchemin|" "$fich"
done
=======
Note : -i.sauv c'est pour qu'une copie du fichier original soit sauvegardé (en y ajoutant l'extension ".sauv") avant la modification du fichier,
et on pourra plus tard, si tout s'est bien passé, supprimer tous les fichiers dont le nom d'extension est
.sauv