Merci Flodelarab pour ton aide. Je t'avoue que je débute dans les regex bash sous OSX. Mon code ne fonctionne pas en faite. Je tente de comprendre pourquoi cette ligne de code ne fonctionne pas avant d'utilisé ta solution. Car je préffèrerais qu'un petit bout de script trouve les fichiers et dossier mal formaté et corrige le problème.
1) Par contre Ecris comme ceci cela fonctionne bien :
for f in *; do fn=`echo $f | sed 's/%3a/-/g'`; mv "$f" "$fn"; done
Je ne sais pas si c'est lors du changement de cloud, mais je retrouve ce genre de chaîne de caractère "%3a" dans les dates placé dans les noms de fichiers. Exemple : "Photo du 01/08/2019" s'affiche dorénavant comme : "Photo du 01%3a08%3a2019". Je sais que c'est une érreur d'utilisé les "/" dans les noms de fichiers et dossiers, mais je n'en suis pas le responsable, et je dois quand même trouvé une solution. Bizarement les / sont utilisable dans les noms de fichier sur Mac. Donc cette ligne de code ci dessus fonctionne bien pour rectifier ce problème. Voila au moins une chose de réglé.
2) Je précise que j'ai changé également le début du code pour que les modifications de noms ne concerne pas que les fichiers mais également les dossiers.
J'ai donc remplacé le par 3) J'ai également constaté que les espaces au début des noms de fichier et dossier son éliminés sans que je n'ai eu à placé quoi que ce soit comme code pour cette opération. Tant mieux même-ci je n'ai pas compris pourquoi.
4) Même après recherche je n'ai pas compris la fonction du g présent dans cette ligne que j'ai prise a cette adresse : dans la partie "Exemples concrets - Renommer des fichiers" très visible sur ce site : https://buzut.net/la-commande-sed-pour-les-nazes/.
5) pour revenir a cette ligne de départ
for f in *.*; do fn=`echo $f | sed 's///-/g'`; mv "$f" "$fn"; done
j'ai tenté d'échapé ce "/" avec un "\" mais rien n'y fait. Car j'ai principalement une érreur sous Terminal OSX "bad flag in substitute command: '-'"Je me demande si ce ne serai pas OSX qui serait peut-être différent sur les regex face aux linux.
6) J'ai tenté d'utilisé le style "Commandes groupées" exemple :
sed '/^#/ {y/éèê/eee/;s/Dupond/Dupont/g}' fichiersource.txt
en faisant
for f in *; do fn=`echo $f | sed 's/%3a/-/;s///-/g'`; mv "$f" "$fn"; done
Mais cela ne fonctionne pas.
Merci d'avance à tout ceux qui pourront m'aider.
Partager