Bonjour
Comment je pourrais faire pour parcourir un répertoire et modifier les noms des fichiers qui se trouvent dedans qui comportent des caracères spéciaux en scripting shell.
Merci
Bonjour
Comment je pourrais faire pour parcourir un répertoire et modifier les noms des fichiers qui se trouvent dedans qui comportent des caracères spéciaux en scripting shell.
Merci
par exemple pour remplacer les \ dans les noms par des _:
après faut adapter à tes besoins c'est quels caractères que tu veux éliminer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part for i in ./a_trier/* ; do mv $i $(echo $i | sed -e "s/\\/_/") ; done
le subsitute multiple devrait aussi marche plustot que d'en faire deux
avec s/[\\@.é\"]/_/ je suppose
en fait j'ai essayé avec les lignes suivantes
Sauf que lorsque j'ai un fichier qui comporte des esapaces, le script le décompose et ne comprend pas que c'est un seul fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #!/bin/bash for i in $(ls) do echo $i k=`echo $i |sed -e s/[é,è]/e/g -e s/' '/-/g ` mv $i $k done
tu devrais peut être essayer avec ${i}
pour empecher ça ou encore
echo "${i}" | sed......... ou sinon
tu remplaces par un _ avant ....et hop plus de soucis...
Solution évitant les ruptures sur les blancs dans les noms de fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ls | while read i do ... done
Maintnant j'ai pu remplacer tous les blanc. Sauf que lorsque je fais mv mon_ancien_qui_comportait_des_espace mon_nouveau_sans_espace j'ai le message suivant:
mv: la cible `Mon-fichier-de-test' n'est pas un répertoire. l'interpréteur croit que mon_ancien fichier est en fait décomposé en plusieur fichiers donc il ne peut pas le remplacer.
Comment faire?
Tu appliques le conseil de frp31 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part mv "$i" $k
J'ai toujours le même message en faisat ça
Ok là c'est bon
je n'ai pas fait attention au séparateur"".
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager