Bonjour à tous,

Je me suis fait un script en bash permettant de renommer des fichiers dans plusieurs répertoires, en passant, pour chaque répertoire, une chaine de caractères différentes.
J'ai utilisé une boucle while, commande read pour passer la chaîne de caractères etc...
Ça fonctionne plutôt bien.... Sauf quand il y a un problème interface homme machine
Au moment de saisir ma chaine de caractères, j'ai voulu effacer et je n'aurais pas dû, cela a complètement pété mon renommage.

Un exemple sera plus parlant. J'ai un fichier Toto.jpg que j'ai voulu renommer en Photo_01.jpg
Actuellement, je me retrouve avec :
  • Windows qui affiche quelque chose comme : 'Photo·[D·[D·[D_01.jpg'

  • Commande ls sur Gitbash : 'Photo'$'\033''[D'$'\033_01.jpg'

  • Toujours sur Gitbash : name=(*)
    echo $name : 'Pho_01.jpgto'

J'ai évidemment essayé de modifier directement sur l'explorateur Windows le nom, mais les D'$'\033 se réaffiche toujours.
J'ai essayé de faire des mv, mais je me prends une erreur "file name is too long" sur le fichier que j'essaie de renommer.
Du coup, j'ai essayé de faire des sed en recherchant les caractères, mais j'ai l'impression que les caractères ne sont pas trouvés et du coup je ne comprends pas quoi chercher.

Après pas mal de recherche et de tests, je n'ai toujours pas trouvé de solutions à mon problème.

Est-ce que quelqu'un aurait une solution? Et mieux encore, une explication pour que je puisse comprendre ce qui a cloché?

Merci par avance.